我面试的研究,并正检讨树木,我有穿越他们的时候没有问题,但我有一个问题我一直没能得到正确答案的身影到:树的遍历在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