1. 程式人生 > 其它 >AVL平衡二叉查詢樹

AVL平衡二叉查詢樹

AVL樹:左旋與右旋

AVL樹的基本操作一般涉及運做同在不平衡的二叉查詢樹所運做的同樣的演算法。但是要進行預先或隨後做一次或多次所謂的"AVL 旋轉"。

假設由於在二叉排序樹上插入結點而失去平衡的最小子樹根結點的指標為a(即a是離插入點最近,且平衡因子絕對值超過1的祖先結點),則失去平衡後進行進行的規律可歸納為下列四種情況:

1.單向右旋平衡處理RR:由於在*a的左子樹根結點的左子樹上插入結點,*a的平衡因子由1增至2,致使以*a為根的子樹失去平衡,則需進行一次右旋轉操作;

2.單向左旋平衡處理LL:由於在*a的右子樹根結點的右子樹上插入結點,*a的平衡因子由-1變為-2,致使以*a為根的子樹失去平衡,則需進行一次左旋轉操作;

3.雙向旋轉(先左後右)平衡處理LR:由於在*a的左子樹根結點的右子樹上插入結點,*a的平衡因子由1增至2,致使以*a為根的子樹失去平衡,則需進行兩次旋轉(先左旋後右旋)操作。

4.雙向旋轉(先右後左)平衡處理RL:由於在*a的右子樹根結點的左子樹上插入結點,*a的平衡因子由-1變為-2,致使以*a為根的子樹失去平衡,則需進行兩次旋轉(先右旋後左旋)操作。