AVL树---平衡的二叉查找树
生活随笔
收集整理的這篇文章主要介紹了
AVL树---平衡的二叉查找树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AVL樹是每個結點的左子樹和右子樹的高度最多差1的二叉查找樹(空樹的高度定義為-1)。
它能保持二叉樹的高度平衡,盡量降低二叉樹的高度,減少樹的平均搜索長度。
AVL樹的性質:
- 左子樹和右子樹的高度差不超過1
- 每個結點的左子樹和右子樹都是AVL樹
- 每個結點都有一個平衡因子,任一結點的平衡因子是-1,0,1。每個結點的平衡因子等于右子樹高度減去左子樹的高度
AVL樹是在二叉查找樹的基礎上建立的,我們知道二叉查找樹在最壞情況下(每個結點只有左子樹或右子樹)增刪查的時間復雜度是O(N),這種極端的情況下樹是高度不平衡的。
在二叉查找樹的基礎上,如果使左右子樹的高度差不超過1,即達到高度平衡的狀態,此時增刪查的時間復雜度為O(logN)(2為底數)。
為了讓它保持高度平衡,我們引入了平衡因子,每個結點的平衡因子只可能是-1,0,1中的一個。
每次插入/刪除一個結點,我們都需要向上更新一下新增結點/刪除結點的祖先的平衡因子。一旦發現某個祖先的平衡因子變為2或者-2,我們就需要通過旋轉來使這棵樹保持AVL樹的特性。
轉載于:https://www.cnblogs.com/i-hard-working/p/10749998.html
總結
以上是生活随笔為你收集整理的AVL树---平衡的二叉查找树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux体系结构
- 下一篇: 已知蜜蜂和蝴蝶挥动翅膀的频率,请问你能感