2013-04-07 186 views
2

我必須鬆開二叉樹。我的意思是,我有以下方法鬆開二叉樹

public static <T> BinaryNode<T> unthread(BinaryNode<T> root) 

接收雙重線索二叉樹,它應該返回一個擰開樹 - 這意味着,它必須刪除曾經是額外的節點null使它們再次爲空。

我認爲我應該這樣做的方式是與每個節點建立鏈接列表,然後調用一個輔助方法,該方法將以線程樹和鏈接列表作爲參數。然後,遍歷樹,如果已經訪問了一個節點,這意味着我必須刪除它。

我不知道這是否會起作用。你有什麼建議?

+1

什麼是「雙線程樹」? – 2013-04-07 17:43:55

+0

也許你的意思是「雙重聯繫」?這意味着孩子節點有一個參考,父母也有參考。 – gaborsch 2013-04-07 17:45:43

+0

我認爲OP是指像堆數據結構中的二進制節點,並將它們轉換爲鏈接列表中的單鏈接節點。 – 2013-04-07 17:46:47

回答

0

它工作:)。我使用了前序遍歷和鏈表。正如我所說如果節點是在鏈表中,並沒有添加它,多數民衆贊成在它。