class Solution {
// left right root: postorder
// so do root right left (like preorder) then reverse(add to res first)
public List<Integer> postorderTraversal(TreeNode root) {
LinkedList<Integer> res = new LinkedList<>();
Stack<TreeNode> stack = new Stack<>();
while (root != null || !stack.isEmpty()) {
if (root != null) {
stack.push(root);
res.addFirst(root.val);
root = root.right;
} else {
root = stack.pop().left;
}
}
return res;
}
}