数据结构——树与二叉树学习笔记(一)

本文详细介绍了树与二叉树的基本概念,包括树的术语、基本性质以及二叉树的特殊类型。此外,文章讨论了二叉树的存储结构、遍历方法(递归与非递归)以及线索二叉树的构造和遍历。对于数据结构的学习者来说,这是宝贵的参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


数据结构——树与二叉树,记录了与树相关的重要知识点,可作为查阅使用。


1. 树的基本概念

1.1 树的概念术语

结点、根、分支、子树、森林、前后驱、祖先、子孙、双亲、孩子、兄弟、结点的度、树的度、分支结点、叶子结点、层次、堂兄弟、深度、高度、树的高度(深度)、有(无)序树、路径、路径长度,m叉树。

1.2 树的基本性质

1)树中的结点数 = 所有结点的度数 + 1

2)度为m的树中第i层上至多有 m i − 1 m^{i-1} mi1个结点( i ≥ 1 i\geq 1 i1

3)高度为h的m叉树至多有 ( m h − 1 ) / ( m − 1 ) (m^h-1)/(m-1) (mh1)/(m1)个结点

当每个结点的度都为m的时候,利用等比数列 m h − 1 + m h − 2 + ⋯ + m + 1 m^{h-1}+m^{h-2}+\cdots +m+1 mh1+mh2++m+1求得的结果

4)具有n个结点的m叉树的最小高度为 [ l o g m ( n ( m − 1 ) + 1 ) ] [log_m(n(m-1)+1)] [logm(n(m1)+1)]

5)高度为h的m叉树至少有h个结点

6)高度为h,度为m的树至少有 h + m − 1 h+m-1 h+m1个结点

7)具有n个结点的m叉树的最小高度为 [ l o g m ( n ( m − 1 ) ) ] [log_m(n(m-1))] [logm(n(m1))]

​ 假设高度为h。若具有n个结点的m叉树高度最小,则每个结点的度都为m,由(3)可得,此时有 ( m h − 1 ) / ( m − 1 ) ) < n ≤ ( m h − 1 ) / ( m − 1 ) (m^{h-1})/(m-1))<n\leq (m^h-1)/(m-1) (mh1)/(m1))<n(mh1)/(m1)成立。对不等式进行变换后可得 h − 1 < l o g m ( n ( m − 1 ) ) ≤ h h-1<log_m(n(m-1))\leq h h1<logm(n(m1))h,对h向上取整即可得 ⌈ l o g m ( n ( m − 1 ) ) ⌉ \lceil log_m(n(m-1))\rceil logm(n(m1))

2. 二叉树的概念

2.1 几个特殊的二叉树

(1)满二叉树

即除叶子结点外其余结点的度均为2的二叉树。对满二叉树进行自上而下、自左向右进行编号,对编号为i的结点:

  • 若有双亲,则其双亲为 ⌊ i / 2 ⌋ \lfloor i/2\rfloor i/2
  • 若有左孩子,则左孩子为 2 i 2i 2i,若有右孩子,则为 2 i + 1 2i+1 2i+1

(2)完全二叉树

高度为h,结点为n且结点编号与高度为h的满二叉树一一对应的二叉树。按照满二叉树的方法对结点进行编号,对编号为i的结点:

  • i ≤ ⌊ n / 2 ⌋ i\leq \lfloor n/2 \rfloor in/2,则该结点为分支结点,否则为叶子结点。

因为完全二叉树与满二叉树的结点编号一一对应,则完全二叉树也具有满二叉树的编号规律。对于 i = n i=n i=n的结点,其双亲为最后一个有孩子的结点,即 ⌊ n / 2 ⌋ \lfloor n/2 \rfloor n/2,所有当 i > ⌊ n / 2 ⌋ i> \lfloor n/2 \rfloor i>n/2时的结点全为叶子结点。

  • 2 i ≤ n 2i\leq n 2in,则说明有左孩子;若 2 i + 1 ≤ n 2i+1\leq n 2i+1n,则说明有右孩子

由满二叉树的性质可知,若结点的左右孩子存在,则左孩子等于 2 i 2i 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值