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

LeetCode 107. 二叉树的层次遍历II BFS

作者: lhsjohn | 来源:发表于2019-03-31 22:53 被阅读0次
    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
    
    例如:
    给定二叉树 [3,9,20,null,null,15,7],
    
        3
       / \
      9  20
        /  \
       15   7
    返回其自底向上的层次遍历为:
    
    [
      [15,7],
      [9,20],
      [3]
    ]
    
    
    

    这道题和102基本上一样,唯一不同的是结果存储的顺序。

    
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<List<Integer>> levelOrderBottom(TreeNode root) {
                    List<List<Integer>> lists = new LinkedList<>();
            if (root ==null ) return lists;
            Queue<TreeNode> queue  = new LinkedList<>();
            queue.add(root);
            while (!queue.isEmpty()){
                int count = queue.size();
                List<Integer> list = new ArrayList<Integer>();
    
                while (count > 0){
                    TreeNode temp  = queue.poll();
    
                    list.add(temp.val);
    
                    if (temp.left!=null){
                        queue.add(temp.left);
                    }
    
                    if (temp.right!=null){
                        queue.add(temp.right);
                    }
    
                    count--;
                }
    
           ((LinkedList<List<Integer>>) lists).addFirst(list);
    
    
            }
    
            return lists;
        }
    }
    
    
    
    
    

    相关文章

      网友评论

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

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