Я недавно начал изучать информатику и программирование на Java и познакомился с методами Traversal. Я пишу код Java с использованием стека. Я был с этой проблемой и не мог найти никакого решения. Есть ли в любом случае, мы можем реализовать обход Post Order, используя только один стек (без какой-либо дополнительной структуры данных или дополнительного пространства)?
Я пытался это сделать, и вот мой код.
class node {
int data;
node left, right;
node(int val){
data = val;
left = right = null;
}
}
public class binaryt {
public static void postorder(node root) {
node current = root;
Stack<node> st = new Stack<>();
System.out.println();
System.out.print("Post-order : ");
while(current!=null) {
st.push(current);
current = current.left;
}
while(!st.empty()) {
current = st.pop();
if(current.right==null) {
System.out.print(current.data+" ");
current = null;
}
else {
st.push(current);
current = current.right;
while(current!=null) {
st.push(current);
current = current.left;
}
}
}
}
public static void main(String[] args) {
node root=null;
root = new node(12);
root.left = new node(8);
root.left.left = new node(2);
root.left.right = new node(9);
root.right= new node(16);
root.right.left= new node(13);
root.right.right= new node(18);
postorder(root);
}
}
Я не могу найти, что не так с кодом, так как он работает в бесконечном цикле. Если бы кто-нибудь мог мне помочь, это было бы огромной милостью.
Большое вам спасибо.