題意:不引入新節點,只允許指針操作,實現二元查找樹轉換爲相應雙向鏈表。
10
/ /
6 14
/ / / /
4 8 12 16
轉換成雙向鏈表
4=6=8=10=12=14=16
分析:
方法0:轉換後的雙向鏈表正好爲原樹的中序遍歷,所以引入一個新指針遞歸遍歷即可。
方法1:從10節點看,它的前趨、後繼分別是左子樹的最右節點與右子樹的最左節點,所以找到前趨與後繼保存,遞歸實現即可。
代碼中驗證Btree建立成功分別用先序、中序與後序來遍歷。然後又用到了Btree拷貝方法驗證兩種tree2list方法。
C++實現:
運行結果: