AVL樹誕生的原因
如果數據是有序的或者接近有序的,搜索二叉樹就會產生單支的情況,單支就相當於在順序表中搜索元素,降低了效率。因此1962年俄羅斯兩位數學家發明了AVL樹。
AVL樹
在二叉搜索樹中插入新的結點後,保證每個結點的左右子樹的高度之差的絕對值不超過1,就可以降低樹的高的,減少平均搜索長度。
性質:
- 左右子樹都是AVL樹
- 左右子樹的高的之差爲-1或0或1(平衡因子)
AVL樹的插入
- 空樹(直接插入)
- 尋找插入位置
- 插入新結點
- 更新平衡因子(旋轉調節)
旋轉分析
- 較高右子樹的右側—>(左單旋)
- 較高左子樹的左側—>(右單旋)
- 較高右子樹的左側—>(先右後左)
較高左子樹的右側—>(先左後右)