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


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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 夜莺2517阅读 127,779评论 1 9
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,634评论 28 53
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,683评论 2 9
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,244评论 4 8