leetcode145. 二叉树的后序遍历

2019-04-16  本文已影响0人  topshi

题目描述

给定一个二叉树,返回它的 后序 遍历。
相关话题: 栈、树    难度: 困难

示例


进阶: 递归算法很简单,你可以通过迭代算法完成吗?
 public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        postorderTraversal(res,root);
        return res;
    }
    public void postorderTraversal(List<Integer> res, 
                                    TreeNode root){
        if(root == null) return;
        postorderTraversal(res,root.left);
        postorderTraversal(res,root.right);
        res.add(root.val);
    }
 public List<Integer> postorderTraversal(TreeNode root) {
        if(root == null) return new ArrayList<Integer>();
        List<Integer> res = new ArrayList<Integer>();
        Stack<TreeNode> stack1 = new Stack<TreeNode>();
        Stack<TreeNode> stack2 = new Stack<TreeNode>();
        stack1.push(root);
        while(!stack1.isEmpty()){
            TreeNode x = stack1.pop();
            stack2.push(x);
            if(x.left != null){
                stack1.push(x.left);
            }
            if(x.right != null){
                stack1.push(x.right);
            }
        }
        while(!stack2.isEmpty()){
            res.add(stack2.pop().val);
        }
        return res;
    }
上一篇下一篇

猜你喜欢

热点阅读