力扣(LeetCode) -145 二叉树的后序遍历

作者: 小怪兽大作战 | 来源:发表于2019-01-03 11:45 被阅读0次

    本题考察的二叉树的后序遍历

    题目描述

    给定一个二叉树,返回它的 后序 遍历。

    示例:
    输入: [1,null,2,3]
    1

    2
    /
    3

    输出: [3,2,1]

    进阶: 递归算法很简单,你可以通过迭代算法完成吗?

    题目思考

    本题考察的是基础的二叉树遍历。我们应该把二叉树的各种遍历(前序,后序,中序,层序)掌握得很清楚。二叉树的遍历无非就两种方法:递归和队列/栈。好好总结一下,收获会很多。

    代码

    递归方法

    class Solution {
        List<Integer> res=new ArrayList<Integer>();
        public List<Integer> postorderTraversal(TreeNode root) {
            loop(root);
            return res;
        }
        public void loop(TreeNode node){
            if(node==null)
                return;
            loop(node.left);
            loop(node.right);
            res.add(node.val);
        }
    }
    

    栈方法

    class Solution {
        public List<Integer> postorderTraversal(TreeNode root) {
            List<Integer> res=new ArrayList<Integer>();
            if(root==null)
                return res;
            Stack<TreeNode> stack=new Stack();
            stack.push(root);
            while(!stack.isEmpty()){
                TreeNode temp=stack.peek();
                if(temp.left==null&&temp.right==null){
                    stack.pop();
                    res.add(temp.val);
                }else if(temp.left!=null){
                    TreeNode left=temp.left;
                    temp.left=null;
                    stack.push(left);
                }else if(temp.right!=null){
                    TreeNode right=temp.right;
                    temp.right=null;
                    stack.push(right);
                }
            }
            return res;
        }
    }
    

    相关文章

      网友评论

        本文标题:力扣(LeetCode) -145 二叉树的后序遍历

        本文链接:https://www.haomeiwen.com/subject/fgkfrqtx.html