数据结构中的树,是对现实世界中的树的一层简化: 把树根抽象为根节点,述职抽象为边,树枝的两个端点抽象为节点, 树叶抽象为叶字节点。抽象后的树结构如下:


image.png

把这棵树抽象颠倒一下就得到了计算机中的树结构:


image.png

结合这张图,我们来讲解树的关键特性和重点概念。
  • 树的层次计算规则: 跟节点所在的层为第一层,其自己点所在的为第二层,以此类推
  • 结点和树的“高度”计算规则:叶子结点高度记为1,每向上一层高度就加1,逐层向上累加至目标结点时,所得到的的值就是目标结点的高度。树中结点的最大高度,称为“树的高度”。
  • 度的概念: 一个节点开叉出去多少子树,即为度
  • 叶子节点就是度为0的结点

二叉树

二叉树是指满足一下要求的树

  • 它可以没有根节点作为一棵空树存在
  • 如果他不是空树,那么他必须有根节点,左子树和右子树组成,且左右子树都是二叉树

image.png

二叉树的编码实现

在js中定二叉树,他的结构分为3块

  • 数据域
  • 左侧子节点的引用
  • 右侧子节点的引用
//二叉树节点的构造函数
function TreeNode(val){
  this.val = val
  this.left = this.right = null
}

当需要新建一个二叉树时,直接调用构造函数传入数据域的值就行了:

const node = new TreeNode(1)

如此便能得到一个值为1的二叉树节点,从结构上来说,他张这样:


image.png

以这个节点为根节点,我们可以通过给left、right赋值拓展其子树信息,延展出一棵二叉树。因此从更加细化的角度来看,一棵二叉树的形态实际是


image.png

你可能感兴趣的:(树)