Я хочу сделать обратный ход двоичного дерева, используя только один стек. Это мой код, прежде всего я нажимаю левые элементы в стек до достижения нулевого значения. Затем я выталкиваю элемент и проверяю, является ли выпадающий элемент и правый элемент текущего верхнего стека одинаковым или нет. Но так или иначе это происходит в бесконечном цикле. можешь мне сказать почему??после обхода порядка в двоичном дереве с использованием одного стека
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;
}
}
}
Можете ли вы привести пример того, что он застрял? –