- 问题描述
实现树的后序遍历(非递归) - 源代码
代码中有注释
public class TreeNode {
public char val;
public TreeNode left;
public TreeNode right;
public TreeNode(char var) {
this.val = var;
}
}
import java.util.Deque;
import java.util.LinkedList;
public class PostTraversal {
public void postTraversal1(TreeNode root) {
Deque<TreeNode> stack = new LinkedList<>();
TreeNode cur = root;
TreeNode pre = null;
while (!stack.isEmpty() || cur != null) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
TreeNode top = stack.peek();
if (top.right == null) {
System.out.println(top.val);
pre = stack.pop();
} else if (top .right == pre) {
System.out.println(top.val);
pre = stack.pop();
} else {
cur = top.right;
}
}
}
}