Fibonacci数列与二叉平衡搜索树

前言

在学习二叉平衡检索树的时候,有一个题,求5层AVL树至少拥有多少个结点?
然后去百度,找到了答案。于是我来记录一下

一 背景

1.1 AVL树

AVL树是一种平衡树,即二叉树的右、左子树的高度差不超过1。

前苏联学者Adelson-VelskiiLandis的名字命名。

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(n1)+F(N2)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

你可能感兴趣的:(数据结构)