1. 程式人生 > >關於AVL樹的思考

關於AVL樹的思考

回溯 二叉樹 就是 avl 左右 大小 開始 繼續 是否

  AVL樹即平衡二叉樹,每個結點有一個平衡因子,即左子樹高度減去右子樹高。每插入一個結點時,從根部開始按二叉排序樹的方法,與節點不斷比較,按大小向左右子樹插入。在與最後的節點比較後插入時,若有兄弟節點,說明樹的高度沒有變,此時依然平衡;若沒有,則小範圍內樹高改變了,需回溯,依次更改祖先的平衡因子,若遇到有平衡因子失衡,則,調整,使其與插入之前高度一致,以保證平衡,若未失衡,且平衡因子不變,說明該子樹高度未變,停止回溯。——簡而言之就是插入後從底開始看有沒有影響樹高,小樹高可能影響大樹高,若無波瀾則不變,若有波瀾則看是否失衡,失衡調整結束,僅僅只是波瀾則繼續向上看波瀾。

  對於刪除,刪除一個結點與插入相似,調整祖先平衡因子,遇到波瀾向上看波瀾,判斷是否要調整,若無波瀾結束。

  調整就是兩種(四種)情況,相關解釋很多。

關於AVL樹的思考