數據結構---二叉樹(2)---平衡二叉樹(2)

0.簡介

上一篇說到了平衡二叉樹不平衡的一種情況,這次我們來看另一種情況。

1.平衡二叉樹

不平衡的情況

根據上一篇的介紹,對於這種情況,我們先考慮將A節點降低來配合C節點的深度。

調整樹

上圖中,我將C又收回去了,因爲這裏的調整和C沒什麼關係,我們發現,調整好後,樹仍然是不平衡的!雖然將A中的子樹與原來B中的子樹(陰影部分)達到了平衡,但是卻升高了B的另一個子樹,導致再次不平衡,看來用上一篇的方法對付這種情況不好用了。

調整樹

我們看新的這條調整路線,將A節點拿下來後,並沒有直接將C節點接上去,而是將C的右子樹接上去,然後將A接在C的右子樹上,我們看到了圖5-C的結果,是不是似曾相識,對,就是上一篇將的結構,只是方向變了,我們只需要用上一篇的方法在5-C上用一遍就好了。還有別的接法嗎?有。

調整樹

上圖就是另一種調整方法,但是稍微麻煩點,不過也能達到目的。這樣調整能成功的原因是,我們將不熟悉的東西調整到了熟悉的,然後再利用熟悉的方法去解決,那麼這種情況爲什麼需要兩步呢,這個我們下次再討論。

代碼步驟

上圖中描述代碼過程。

 

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