美文网首页
107. 二叉树的层次遍历 II

107. 二叉树的层次遍历 II

作者: 一只小星_ | 来源:发表于2019-08-04 22:38 被阅读0次

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    image.png
    思路:
    遍历树,把每一层的左右节点保存到队列,
     public List<List<Integer>> levelOrderBottom(TreeNode root) {
             List<List<Integer>> res = new ArrayList<>();
            if (root == null){
                return res;
            }
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            //当队列不为空时,看队列中元素的个数,拿出来,在拿的过程中把下一层的放进去
            while (!queue.isEmpty()){
                int size = queue.size();
                List<Integer> ans = new ArrayList<>();
                for (int i =0;i<size;i++){
                    //从队列里面拿出来
                    TreeNode node = queue.poll();
                    //放到这一层的list
                    ans.add(node.val);
                    if (node.left!=null){
                        queue.offer(node.left);
                    }
                    if (node.right!=null){
                        queue.offer(node.right);
                    }
                }
                res.add(ans);
            }
            Collections.reverse(res);
            return res;
        }
    

    相关文章

      网友评论

          本文标题:107. 二叉树的层次遍历 II

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