平衡二叉樹
平衡二叉樹(Balanced Binary Tree),又稱AVL樹
定義
空樹,或者任一結點左、右子樹高度差的絕對值不超過1,即
|BF(T)|≤1
- “平衡因子”(Balance Factor,簡稱BF):
BF(T)=hL−hR ,其中hL 和hR 分別爲T 的左、右子樹的高度
特性
- 設
nh 是高度爲h 的平衡二叉樹的最小結點數,有:
nh=nh−1+nh−2+1 nh=Fh+2−1,h≥0 ,Fh 爲斐波那契函數- 給定結點數爲
n 的AVL樹的查找效率是O(logn2) ,最大高度是logn2
平衡二叉樹的調整
在插入結點時,導致某個結點不平衡,把這個結點稱爲發現者,插入結點稱爲麻煩結點
RR插入
麻煩結點在發現者右子樹的右邊,需要RR旋轉(右單旋)
LL插入
麻煩結點在發現者左子樹的左邊,需要LL旋轉(左單旋)
LR插入
麻煩結點在發現者左子樹的右邊,需要LR旋轉
RL插入
麻煩結點在發現者右子樹的左邊,需要RL旋轉
注意:有時候插入元素即便不需要調整結構,也可能需要重新計算一些平衡因子