给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

TIM截图20190205225054.png

返回其层次遍历结果:

[[3],[9,20],[15,7]]

注意:

LinkedList实现了Deque接口,Deque接口又继承Queue
所以可以这么定义一个FIFO队列Queue<TreeNode> queue = new LinkedList<TreeNode>();
还有for循环的时候不要写for (int j = 0; j <queue.size(); j++), queue.size()每次会重新计算导致结果不正确!!!

class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> list = new ArrayList<List<Integer>>();
        if (root==null) return list;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        while (!queue.isEmpty()){
            List<Integer> li = new ArrayList<Integer>();
            int size = queue.size();
            for (int j = 0; j <size; j++) {
                TreeNode node = queue.poll();
                li.add(node.val);
                if(node.left!=null) queue.offer(node.left);
                if(node.right!=null) queue.offer(node.right);
            }
            list.add(li);
        }
        return list;
    }
}

标签: leetcode, java, bfs

仅有一条评论

  1. 大过年的,求求你别学了,我跟不上o(TヘTo)

添加新评论