【數據結構】平衡二叉樹的調整(RR LL LR RL)旋轉詳解講解

旋轉的命名規則

在這裏插入圖片描述
  如圖初始插入節點Nov後,Mar節點的平衡因子(左右兩個子樹的高度差的絕對值)大於1,不滿足平衡二叉樹性值,所以要對其進行調整。

  其中Mar節點的平衡因子大於了1,所以稱Mar節點爲“發現者”,因爲插入了Nov節點導致平衡二叉樹被破壞,所以Nov節點稱爲“麻煩節點”。

  所謂旋轉,如RR旋轉之所以叫RR旋轉是因爲:不平衡的“發現者”是Mar,“麻煩結點”Nov 在發現者(Mar)右子樹的右邊。

即:
  旋轉的命名(LL、RR、LR、RL)也都是根據被破壞節點Mar(平衡因子大於一)與麻煩節點(造成這種情況的結點)的相對位置命名。

  在發現結點的左子樹還是右子樹(L或R)的左節點還是右節點(L或R)上插入新節點。

  而旋轉,如上圖,對插入Nov後的不平衡樹進行右旋轉,就是對發現者Mar與破壞者的父節點May進行位置上的變化

即:
  進行旋轉的是發現節點(被破壞節點)與麻煩節點的父節點(平衡因子不等於0)

RR旋轉(右單旋)

在這裏插入圖片描述
RR旋轉,先看命名規則:
  不平衡的“發現者”是Mar,“麻煩結點”Nov 在發現者(Mar)右子樹的右邊,因而叫 RR 插入,需要RR 旋轉(右單旋)

在這裏插入圖片描述
旋轉過程:
  在RR旋轉時B節點與A節點位置互換,節點B成爲樹的根節點。 關鍵節點A將向左移動併成爲B的左子節點。

  B節點的右子樹BR還是B的右子樹,B節點的左子樹BL成爲A節點的右子樹,和A的節點AL成爲節點A的左右子樹。

LL旋轉(左單旋)

在這裏插入圖片描述
LL旋轉,先看命名規則:
  “發現者”是Mar,“麻煩結點”Apr在發現者左子樹的左邊,因面叫LL插入,需要LL旋轉(左單旋)

在這裏插入圖片描述
旋轉過程:
  在LL旋轉時B節點與A節點位置互換,節點B成爲樹的根節點。 關鍵節點A將向右移動併成爲B的右子節點。

  B節點的左子樹子樹BL還是B的左子樹,B節點的右子樹BR成爲A節點的左子樹,和AR成爲節點A的左右子樹。

LR旋轉(左右旋轉)

在這裏插入圖片描述
LR旋轉,先看命名規則:
  “發現者”是May,麻煩結點”Jan在左子樹的右邊,因而叫LR 插入,需要LR 旋轉

在這裏插入圖片描述
旋轉過程:
  麻煩節點的父節點即最下層平衡因子非0節點C,與其父節點B(發現節點的左節點)進行右旋轉(RR),導致C代替B的位置,B成爲C的左節點,C的左子樹CL成爲B的右子樹。

  發現節點A與C進行左旋轉(LL),導致C代替A的位置,A成爲C的右節點,C的右子樹成爲A的左子樹

RL旋轉(右左旋轉)

在這裏插入圖片描述
RL旋轉,先看命名規則:
  “發現者”是May,麻煩結點”Jan在右子樹的左邊,因而叫RL 插入,需要RL 旋轉

在這裏插入圖片描述
旋轉過程:
  麻煩節點的父節點即最下層平衡因子非0節點C,與其父節點B(發現節點的右節點)進行左旋轉(LL),導致C代替B的位置B成爲C的右節點,C的右子樹CR成爲B的左子樹

  發現節點A與C進行右旋轉(RR),導致C代替A的位置,A成爲C的左節點,C的左子樹成爲A的右子樹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章