2013-04-02 39 views
1

你好,我應該寫ThreadedNode()類,但即時通訊有幾個問題。線程化二叉樹

我知道一個二叉樹的線程化二叉樹是通過將inorder遍歷中的每個空左子節點設置爲該節點的前任節點,並將每個空子節點 設置爲該inorder遍歷中該節點的後繼節點。

但是我有我的問題開始與構造 //線程二叉樹時,您將得到根本 公共ThreadedNode(BinaryNode根)

我知道它接收到binaryNode,我必須使它成爲一個線程樹,但我如何創建新的線程樹?

+0

首先計算序遍歷,並保持其存儲的地方然後遍歷樹並檢查null是否爲null,從存儲的列表中選擇前置或後繼 –

回答

0

創建線程化二叉樹的常用方法是使用假頭。這使得單節點樹更易於理解,而構造函數更直接。

因此你的構造可能會是這樣的:

public class ThreadedNode { 

    private BinaryNode head; 

    public ThreadedNode(BinaryNode root) { 

     head = new BinaryNode(); 
     root.makeThreaded(); 
     root.setRight(head); 
     head.setRight(root); 

    } 
} 

請記住,以後你需要考慮到這個假頭插入,刪除等