[leetcode-102]Binary Tree Level Order Traversal(java)

来源:互联网 发布:淘宝看不到对方评论 编辑:程序博客网 时间:2024/04/27 17:53

问题描述:
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]
]
confused what “{1,#,2,3}” means? > read more on how binary tree is serialized on OJ.

分析:
这道题可以利用queue的数据结构来解决。

代码如下:292ms

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {        public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new LinkedList<>();        List<Integer> tmp;        int count = 1;        Queue<TreeNode> queue = new LinkedList<>();        queue.offer(root);        while(!queue.isEmpty()){            int tmpCount = 0;            tmp = new LinkedList<>();            for(int i = 0;i<count;i++)            {                TreeNode node = queue.poll();                if(node!=null){                    tmp.add(node.val);                    queue.offer(node.left);                    queue.offer(node.right);                    tmpCount+=2;                }            }            if(!tmp.isEmpty())                res.add(tmp);            count = tmpCount;        }        return res;    }}
0 0
原创粉丝点击