|
后序遍历二叉树:
思路:借助栈
public static void postOrderTraverse(TreeNode1 root) {
Stack<TreeNode1> stack = new Stack<>();
TreeNode1 cur = null, pre = null; //栈中当前节点与栈中已出栈的上一个节点
stack.push(root);
while(!stack.empty()) {
cur = stack.peek();
if((cur.left == null && cur.right == null) || (pre != null && (pre == cur.left || pre == cur.right)) ) {
l.add(cur.val);
stack.pop();
pre = cur;
}else {
if(cur.right != null)
stack.push(cur.right);
if(cur.left != null)
stack.push(cur.left);
}
}
} |