完全理解二叉树(上)——二叉树的概念、遍历、构造以及线索化

术语

  • 结点的度:结点的子树个数
  • 树的度:树的所有结点中最大的度数
  • 结点的层次:规定根结点在 1 层,其他任一结点的层数是其父结点的层数 +1
  • 树的深度(高度):树中所有结点中的最大层次
  • 叶结点:度为 0 的结点
  • 父结点:有子树的结点
  • 子结点:A为B的父结点,则B为A的子结点
  • 兄弟结点:具有同一父结点的各结点
  • 祖先结点:沿树根到某一结点路径上的所有结点都是这个结点的祖先结点
  • 子孙结点:某一结点的子树中所有的结点
  • 堂兄弟结点:父结点在同一层的结点
  • 森林:若干颗互不相交的树的集合
  • 度为m的树:至少有一个结点的度为m
  • m叉树:结点的度数不能超过m
  • 结点的路径:这两个结点之间所经过的结点序列构成的
  • 结点的路径长度:路径上所经过的边的个数
  • 树的路径长度:从树根到每个结点的路径长度的总和

一、定义

n 个结点构成的有限集合,n = 0 时,为空树,其余结点可分为 m (m>0) 个互不相交的有限集合,每个集合都是一颗树,称为“子树”。

二、性质

任意一颗非空树有如下性质:

  1. 树中有一个称为“根(Root)”的特殊结点,除了根结点外,每个结点有且仅有一个父结点
  2. 树的结点数 = 总度数 + 1,一颗 n 个结点的树有 n-1 条边

三、一些结论

  1. 对于度为 m 的树和 m 叉树,其第 i 层的结点个数最多为 m i − 1 m^{i-1} mi1
  2. 对于度为 m 的树和 m 叉树,假设共有 h 层,那么总共最多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1,利用等比数列求和公式求得。
  3. 高度为 h 的 m 叉树至少有 h 个结点,因为 m 叉树只规定了度不能超过 m,因此允许每个结点度为 1。
  4. 高度为 h,度为 m 的树至少有 h+m-1 个结点(高度为h,则已经有h个,度为m,则有一个结点有m个子结点,故再加 m,而这个结点已经在 h 中算过一次,因此有 h+m-1)。
  5. 具有 n 个结点的 m 叉树最小高度为 ⌈ l o g m n ( m − 1 ) + 1 ⌉ \lceil log_m^{n(m-1)+1}\rceil logmn(m1)+1 ,其中 ⌈ ⌉ \lceil\rceil 为向上取整。证明:高度最小的情况为所有结点都有 m 个孩子,即尽量让树呈横向。设高度为 h,则 h-1 层总共有 m h − 1 − 1 m − 1 \frac{m^{h-1}-1}{m-1} m1mh11个结点,h 层共有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点,则有不等式
    m h − 1 − 1 m − 1 < n ≤ m h − 1 m − 1 \frac{m^{h-1}-1}{m-1} <n≤ \frac{m^h-1}{m-1} m1mh11<nm1mh1
    整理得
    m h − 1 < n ( m − 1 ) + 1 ≤ m h m^{h-1} < n(m-1)+1 ≤ m^h mh1<n(m1)+1mh
    同时取对数
    h − 1 < l o g m n ( m − 1 ) + 1 ≤ h h-1 < log_m^{n(m-1)+1} ≤ h h1<logmn(m1)+1h

二叉树

一、定义

在一般的树上再加两个约束条件就构成了二叉树:

  1. 每个结点的度最多为2,即二叉树中的结点度只能为 0,1,2
  2. 子树有左右顺序,不能颠倒

二、分类

  1. 满二叉树:高度为 h,结点数为 2 h − 1 2^h-1 2
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值