【資料結構】網易2012校園招聘題目--平衡二叉樹的插入問題

pengfoo發表於2012-10-06

平衡二叉樹的插入問題

參考:

http://www.cnblogs.com/fornever/archive/2011/11/15/2249492.html

文章中,將平衡二叉樹的插入問題,歸結為四種情形。分別是左左,右右,左右,右左。

這裡的意思是:

(1)左左:在一個結點的左孩子的左孩子上插入了一個結點,導致平衡破壞。

 

a結點有右孩子d,那要進行x和a變換,那麼a的右孩子放哪啊?

很簡單,如圖放在x的左孩子上;分析:x>d,d>a,所以d可作為x的左孩子,且可作為a的右孩子中的孩子。

 

(2)右右:在一個結點的右孩子的右孩子上插入了一個結點,導致平衡破壞。

 

(3)左右:在一個結點的左孩子的右孩子上插入了一個結點,導致平衡破壞。

 

(4)右左:在一個結點的右孩子的左孩子上插入了一個結點,導致平衡破壞。

通過觀察得出規律:

左左,右右只需做出一次旋轉變換即可重新得出平衡二叉樹。

左右,右左,需要做出兩次旋轉變化才能得到平衡二叉樹。左右,一次變化得到左左,然後再變化得到平衡;右左,一次變化得到右右,然後再變化得到平衡。

 

這樣,看網易這道校園招聘題就有思路了:

以下是一顆平衡二叉樹,請畫出插入鍵值3以後的這顆平衡二叉樹。

 

 

變換過程:

 

相關文章