【发布时间】:2013-12-24 12:40:19
【问题描述】:
我想只使用一个堆栈对二叉树进行后序遍历。这是我的代码,首先我将左元素推入堆栈,直到达到空值。然后我弹出一个元素,检查弹出的元素和当前栈顶的右边元素是否相同。但不知何故,这将进入无限循环。你能告诉我为什么吗??
public void postorderonestack(BinNode root)
{
BinStack s=new BinStack();
while(true)
{
if(root!=null)
{
s.push(root);
root=root.getLeft();
}
else
{
if(s.isEmpty())
{
System.out.println("Stack is Empty");
return;
}
else if( s.top().getRight()==null)
{
root=s.pop();
System.out.println(root.getKey());
if(root==s.top().getRight())
{
System.out.print(s.top().getKey());
s.pop();
}
}
if(!s.isEmpty())
root=s.top().getRight();
else root=null;
}
}
}
【问题讨论】:
-
你能提供一个卡住的例子吗?
标签: java data-structures binary-tree tree-traversal