Binary Tree Level Order Traversal

来源:互联网 发布:淘宝网商城汽车配件 编辑:程序博客网 时间:2024/06/08 23:18

题目 

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its level order traversal as:

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

方法

树的层次遍历,使用Queue,并用一个计数器来标记下一层的元素个数。
PS:其实可以不用计数器,可以用队列元素的个数来统计。
    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);        int count = 1;        while (!queue.isEmpty()) {        int len = count;        count = 0;        List<Integer> subList = new ArrayList<Integer>();        for(int i = 0; i < len; i++) {        TreeNode curNode = queue.poll();        subList.add(curNode.val);        if (curNode.left != null) {        queue.offer(curNode.left);        count++;        }        if (curNode.right != null) {        queue.offer(curNode.right);        count++;        }        }        list.add(subList);        }        return list;    }



0 0