前言
在学习二叉平衡检索树的时候,有一个题,求5层AVL树至少拥有多少个结点?
然后去百度,找到了答案。于是我来记录一下
一 背景
1.1 AVL树
AVL
树是一种平衡树,即二叉树的右、左子树的高度差不超过1。
前苏联学者Adelson-Velskii
和Landis
的名字命名。
1.2 为什么要二叉平衡检索树
二叉平衡检索树 = 检索树 + 平衡树
检索树的时间复杂度为: O ( l o g n ) < T ( n ) < O ( n ) O(logn) < T(n) < O(n) O(logn)<T(n)<O(n),最坏的情况就是n的时间复杂度了,但是在实际应用中,由于插入、删除等操作,树很容易就变成了单枝树的情况,然后,搜索复杂度直接变成 O ( n ) O(n) O(n)。
平衡树的作用就是保持树的平衡结构结构,使时间复杂度维持在 O ( l o g n ) O(logn) O(logn).
1.3 Fibonacci数列
F
(
n
)
=
F
(
n
−
1
)
+
F
(
N
−
2
)
F
(
1
)
=
F
(
2
)
=
1
F(n) = F(n-1) + F(N-2) \\ F(1) = F(2) = 1
F(n)=F(n−1)+F(N−2)F(1)=F(2)=1
F(n) = {1, 1, 2, 3, 5, 8, 13, 21, …}
二 正文
问题:
具有5层结点的AVL树至少有多少个结点
因为根结点层次为1,则高度为h的平衡二叉树最少有结点:
F
(
h
+
2
)
−
1
F(h + 2) -1
F(h+2)−1
其中F 为Fibonacci序列1, 1, 2, 3, 5, 8, 13, 21,…;
Fibonacci数列种,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子数的节点数量;
易知F(1)=1,F(2)=2,F(3)=4 ;
F(5)=F(4)+F(3)+1=2*F(3)+F(2)+2;
因为F(2)=2,F(3)=4;
故F(5)=2*F(3)+F(2)+2=2*4+2+2=12;
即具有5层结点的平衡二叉树至少有12个结点。
参考资料
[1] zengyan809. 具有5层结点的平衡二叉树至少有多少个结点. 百度知道. 2019. https://zhidao.baidu.com/question/136334175435557525.html