问题描述:
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;
}
}