平衡二叉樹的平衡機制

1.什麼是平衡二叉樹,就是任意節點的左右子樹的層數之差不超過1.前提它是一個二叉樹。

 

2.一個平衡二叉樹,在以下4種情況下,會破壞平衡(爲啥要知道4種基本的情況,因爲跟左旋和右旋的息息相關)。

  2.1根節點--->子樹--->左子節點。增加節點操作。簡稱左左

  2.2根節點--->子樹--->右子節點。增加節點操作。簡稱左右。

  2.3根節點--->右子樹--->左子節點。增加節點操作。簡稱右左。

  2.4根節點--->右子樹--->右子節點。增加節點操作。簡稱右右。

 

3. 左旋和右旋的操作是如何進行的。基本要點和結論如下。

   某二叉樹在增加一個節點的時候,如果這個節點打破了平衡(根據概念1中)。那麼就會觸發旋轉機制。

    3.1   如果是左邊的增加的節點打破了平衡,那麼就要右旋。如果是增加右邊的節點打破了平衡,那麼就要左旋。

            實際操作發現,2.2和2.3的情況。光左旋或者光右旋轉一次根本不夠。還是會不平衡。

            那麼需要 支點下方的子樹先整體左旋或者右旋(先變成左左或者右右的情況)。然後再進行第二步左旋或者右旋。

4.什麼是支點? ---就是新增一個節點後,往根節點方向去找。開始出現的不平衡的那個節點

 

5.右旋和左旋的中間過程。

    5.1支點一定會降級。

    5.2 (右旋)---支點 左子節點 會升級,並讓出右子節點,給降級的原支點當左子節點。(左旋相反)

 

6.圖形示例。

 

 6.1 根據平衡二叉樹,找出打破平衡的支點,那就是數字7.(根節點)。 目前是左邊打破的平衡,所以要右旋。

6.2 根據規律和結論。 節點數字7(支點).必須要降級。 右旋的話。支點的左子節點會升級。所以數字4會升級成根節點。並且支點的左子節點右子樹(或者右節點---看成一個整體),會讓出。給降級的節點(原數字7)當左子樹(或者左節點---看成一個整體)。 6.3 結果圖。

 

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