(三)二元查找樹轉換雙向鏈表

題意:不引入新節點,只允許指針操作,實現二元查找樹轉換爲相應雙向鏈表。

    10

   /    /

  6    14

 / /    /  /

4  8 12 16

轉換成雙向鏈表

4=6=8=10=12=14=16

 

 

分析:

方法0:轉換後的雙向鏈表正好爲原樹的中序遍歷,所以引入一個新指針遞歸遍歷即可。

方法1:從10節點看,它的前趨、後繼分別是左子樹的最右節點與右子樹的最左節點,所以找到前趨與後繼保存,遞歸實現即可。

 

 

代碼中驗證Btree建立成功分別用先序、中序與後序來遍歷。然後又用到了Btree拷貝方法驗證兩種tree2list方法。

C++實現:

  

 

 

運行結果:

btree

發佈了42 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章