当从栈中出栈一个元素的时候,检查这个元素的右子节点和栈顶元素是否相同,如果相同,则说明已经完成了左右子树的遍历,此时,只需要将栈顶元素出栈一次并且输出
void postOrderNonRecursive(BinaryTreeNode root){
LLStack s = new LLStack();
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.getData());
if(root == s.top().getRight()){
System.out.println(s.top().getData());
s.pop();
}
}
if(s.isEmpty()){
root = s.top().getRight();
}else{
root = null;
}
}
}
s.deleteStack();
}