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

本文详细介绍了二叉树的相关概念,包括结点的度、树的深度等,以及二叉树的定义、分类和性质。重点讲述了二叉树的遍历(前序、中序、后序)及其构造方法,特别是线索二叉树的线索化过程和在线索二叉树中寻找前驱与后继的方法。内容适合计算机科学的学生和从业者学习。
摘要由CSDN通过智能技术生成

术语

  • 结点的度:结点的子树个数
  • 树的度:树的所有结点中最大的度数
  • 结点的层次:规定根结点在 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值