一、平衡二叉樹(AVL樹)
性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,而且左右兩個子樹都是一棵平衡二叉樹;
AVL樹如圖: 3d
非AVL樹如圖:
致使AVL樹失去平衡大體分爲4種:
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)、舊根節點的左孩子的右孩子爲舊根節點的左孩子 cdn
RR旋轉步驟:
1)、舊根節點的右孩子爲新根節點,
2)、舊根節點變爲新根節點的左孩子,
3)、舊根節點的右孩子的左孩子爲舊根節點的右孩子
LR旋轉:
1)、根節點的左孩子進行RR旋轉,
2)、根節點進行LL旋轉,
RL旋轉:
1)、根節點的右孩子進行LL旋轉,
2)、根節點進行RR旋轉,