AlgoMaster Logo

Binary Tree Postorder Traversal

tree=[1, null, 2, 3]
1public List<Integer> postorderTraversal(TreeNode root) {
2    List<Integer> result = new ArrayList<>();
3    Stack<TreeNode> stack = new Stack<>();
4    TreeNode lastVisited = null;
5    TreeNode current = root;
6
7    while (!stack.isEmpty() || current != null) {
8        if (current != null) {
9            stack.push(current);
10            current = current.left;
11        } else {
12            TreeNode peekNode = stack.peek();
13            if (peekNode.right != null && lastVisited != peekNode.right) {
14                current = peekNode.right;
15            } else {
16                result.add(peekNode.val);
17                lastVisited = stack.pop();
18            }
19        }
20    }
21
22    return result;
23}
0 / 26
peekNode: -lastVisited: nullRL123Stack