Я хочу выполнить обход двоичного дерева в обратном порядке, используя только один стек. Это мой код, прежде всего я помещаю левые элементы в стек, пока не достигну нуля. Затем я извлекаю элемент и проверяю, совпадают ли выдвинутый элемент и правый элемент текущей вершины стека или нет. Но каким-то образом это зацикливается на бесконечности. можешь сказать почему??
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;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/207 ... -one-stack
Обход почтового порядка в двоичном дереве с использованием одного стека ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка метода левого просмотра в двоичном дереве с использованием Python
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Дублированное поддерево в двоичном дереве Сложность во времени и пространстве
Anonymous » » в форуме C++ - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-