首页 > 代码库 > [LeetCode] Binary Tree Postorder Traversal

[LeetCode] Binary Tree Postorder Traversal

public class Solution {    public List<Integer> postorderTraversal(TreeNode root) {        List<Integer> result = new ArrayList<Integer>();        Stack<TreeNode> nodeStack = new Stack<TreeNode>();        TreeNode nowNode = root;        boolean popNode = false;                if (root == null) return result;                while(!(nowNode == root && popNode)) {            if ( !popNode && nowNode != null) {                nodeStack.push(nowNode);                nowNode = nowNode.left;            } else if ( nowNode == null || (popNode && nowNode != nodeStack.peek().right)) { //left done                if (nodeStack.peek().right == null) {                    nowNode = nodeStack.pop();                    result.add(nowNode.val);                    popNode = true;                } else {                    nowNode = nodeStack.peek().right;                    popNode = false;                }                            } else if (popNode && (nowNode == nodeStack.peek().right)) { //right done                nowNode = nodeStack.pop();                result.add(nowNode.val);                popNode = true;                            }        }                return result;    }}

 

[LeetCode] Binary Tree Postorder Traversal