我面試的研究,並正檢討樹木,我有穿越他們的時候沒有問題,但我有一個問題我一直沒能得到正確答案的身影到:樹的遍歷在Java中
編寫一個函數,該函數返回給定兩個參數的樹中的節點: 指向根節點的指針和我們要返回的節點 的inorder遍歷數。存儲在樹中的唯一信息是每個節點的子數 。
到目前爲止,我還沒有能夠確定爲什麼我會照顧存儲在樹中的信息(孩子的數量)。除此之外,如果我們假設有像這樣的樹:
5
4 7
3 1 4
那麼序遍歷將341547
但我想不通的代碼返回我想要的節點(便於討論,我假設中序遍歷數是2 - 意思是我想要值1的節點)。
我試着做一個遞歸遍歷,但我最終擰了內部計數器我有,所以我嘗試了不同的方法,只是試圖把一切都放在堆棧上,但我不知道如何正確地做到這一點。到目前爲止,我有:
public int findNode(root, position){
Stack<Integer> s = new Stack<Integer>();
cNode = root; //cNode = current Node
while(cNode.left != null)
cNode = cNode.left;
s.push(cNode);
while(cNode.right != null)
cNode = cNode.right;
//stuck here.
}
的遞歸方法是比較容易,但我想不出如何檢查,如果我有我要找的#:
public int findNode(root, position){
cNode = root;
if(cNode != null){
findNode(cNode.left, position);
System.out.print(cNode.data);
findNode(cNode.right, position);
}
}
我知道這遍歷樹但它仍然沒有做到我想要的。任何幫助,將不勝感激。
鑑於「存儲在樹中的唯一信息是每個節點的子節點數」,我猜你的示例樹是錯誤的。另外,「inorder traversal number 「究竟是? – Gevorg 2012-02-01 20:29:30
「寫一個函數,返回一個樹中的***節點***給出兩個參數」,***樹中的一個節點***,哪個節點?在該特定索引處具有該特定值OR節點的節點(索引與在中間遍歷中一樣) – Bhushan 2012-02-01 20:33:32