平衡二叉樹的手動調整方法


看書左旋右旋看着懵逼,不懂往左旋轉往右旋轉到底是怎么個旋轉法。

總結了一個萬能的手動調整方法,不用記憶什么LL,LR,RL,RR的形式,通吃。

 

當新插入一個節點,導致不平衡,進行手動調整。

步驟有四步:

1。找到最小不平衡子樹(和其根節點)

2。從根節點出發,沿插入路徑找三個節點

3。調整這三個節點。(找出中位數,讓中位數作為根節點,其余兩個一左一右)

4。剩下的節點,左右子樹的位置保持不變,再找到最后一個節點的插入位置。

 

(1)先以三個節點的情況演示,假設插入了15,3,7,出現不平衡。

 

 

 

 

 

 

 

 

最小不平衡子樹就是三個節點。找出中位數7,作為根節點。然后3放到左邊,15放到右邊。調整完成。

(2)繼續插入10和9,導致不平衡。

最小不平衡子樹如圖所示。從根節點出發找到三個節點。

調整這三個節點的位置,方法和上面一樣,把中位數10作為根節點。

(3)繼續插入8導致不平衡,以及最小不平衡子樹。

7是根節點。從7開始,找到7,10,9三個節點。調整這三個。

 

讓9做根節點,7在左,10在右。

對於剩下的節點,左右子樹位置保持不變。3仍然在最左,15仍然在最右。

然后再找到8應該插在哪里就行了。調整完成。

 

復述一遍方法:

1。找到最小不平衡子樹(和其根節點)

2。從根節點出發,沿插入路徑找三個節點。

3。調整這三個節點。(找出中位數,讓中位數作為根節點,其余兩個一左一右)

4。剩下的節點,左右子樹的位置保持不變,再找到最后一個節點的插入位置。

 

這套方法萬能,不用記書上的四種樣式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM