数据结构——二叉树性质

性质1:在二叉树的第i层上至多有2^(i-1)个结点(i>1)。

这个性质很好记忆,观察一下图6-5-5。

第一层是根结点,只有一个,所以2^(1-1)=2^0=1。

第二层有两个,2^(2-1)=2=2。

第三层有四个,2^(3-1)=2^2=4。

第四层有八个,2^(4-1)=2^3=8。

通过数据归纳法的论证,可以很容易得出在二叉树的第i层上至多有2^(i-1)个结点(i≥1)的结论。

性质2:深度为k的二叉树至多有2*-1个结点(k≥1)。

注意这里一定要看清楚,是2^k后再减去1,而不是2^(k-1)。

深度为k意思就是有k层的二叉树,我们先来看看简单的。

如果有一层,至多1=2^0-1个结点。

如果有二层,至多1+2=3=2^2-1个结点。

如果有三层,至多1+2+4=7=2^3-1个结点。

如果有四层,至多1+2+4+8=15=2^4-1个结点。

通过数据归纳法的论证,可以得出,如果有k层,此二叉树至多有2^k-1个结点。

性质3:对任何一棵二叉树T,如果其终端结点数为n₀,度为2的结点数为n₂,则n₀=n₂+1。

终端结点数其实就是叶子结点数,而一棵二叉树,除了叶子结点外,剩下的就是度为1或2的结点数了,我们设n₁为度是1的结点数。则树T结点总数 n=no+n₁+n₂。

比如图6-6-1的例子,结点总数为10,它是由A、B、C、D等度为2结点,F、 G、H、I、J等度为0的叶子结点和E这个度为1的结点组成。总和为4+1+5=10。

性质4:具有n个结点的完全二叉树的深度为Llog₂n]+1(L×)表示不大于x的 最大整数)。

由满二叉树的定义我们可以知道,深度为k的满二叉树的结点数n一定是2^k-1。 因为这是最多的结点个数。那么对于n=2^k-1倒推得到满二叉树的度数为k=log₂(n+1),比如结点数为15的满二叉树,度为4。

完全二叉树我们前面已经提到,它是一棵具有n个结点的二叉树,若按层序编号 后其编号与同样深度的满二叉树中编号结点在二叉树中位置完全相同,那它就是完全二叉树。也就是说,它的叶子结点只会出现在最下面的两层。

性质5:如果对一棵有n个结点的完全二叉树(其深度为Llog₂n)+1)的结点按层序编号(从第1层到第Llog₂n)+1层,每层从左到右),对任一结点i(1<i≤n) 有:

1.如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点 [i/2]。

2.如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子是结点

2i。

3.如果2i+1>n,则结点i无右孩子;否则其右孩子是结点2i+1。

相关推荐
大数据追光猿2 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!2 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
夏末秋也凉2 小时前
力扣-回溯-46 全排列
数据结构·算法·leetcode
南宫生2 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
柠石榴2 小时前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
Leuanghing2 小时前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
qy发大财2 小时前
加油站(力扣134)
算法·leetcode·职场和发展
王老师青少年编程2 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛
qy发大财2 小时前
柠檬水找零(力扣860)
算法·leetcode·职场和发展
瓦力的狗腿子2 小时前
Starlink卫星动力学系统仿真建模番外篇6-地球敏感器
算法·数学建模·simulink