1、平衡二叉樹(AVL樹)
性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹;
AVL樹如圖:
LL:LeftLeft,也稱“左左”。插入或刪除一個節點後,根節點的左孩子(Left Child)的左孩子(Left Child)還有非空節點,導致根節點的左子樹高度比右子樹高度高2,AVL樹失去平衡。
RR:RightRight,也稱“右右”。插入或刪除一個節點後,根節點的右孩子(Right Child)的右孩子(Right Child)還有非空節點,導致根節點的右子樹高度比左子樹高度高2,AVL樹失去平衡。
LR:LeftRight,也稱“左右”。插入或刪除一個節點後,根節點的左孩子(Left Child)的右孩子(Right Child)還有非空節點,導致根節點的左子樹高度比右子樹高度高2,AVL樹失去平衡。
RL:RightLeft,也稱“右左”。插入或刪除一個節點後,根節點的右孩子(Right Child)的左孩子(Left Child)還有非空節點,導致根節點的右子樹高度比左子樹高度高2,AVL樹失去平衡。
四種失去平衡的情況下對應的旋轉方法:
LL旋轉步驟:
1)、舊根節點的左孩子為新根節點,
2)、舊根節點變為新根節點的右孩子,
3)、舊根節點的左孩子的右孩子為舊根節點的左孩子
1)、舊根節點的右孩子為新根節點,
2)、舊根節點變為新根節點的左孩子,
3)、舊根節點的右孩子的左孩子為舊根節點的右孩子 LR旋轉:
1)、根節點的左孩子進行RR旋轉,
2)、根節點進行LL旋轉, RL旋轉:
1)、根節點的右孩子進行LL旋轉,
2)、根節點進行RR旋轉,