作者:disappearedgod
时间:2014-8-28
题目
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.
解法
解法很简单:用两个队列,一个解决list添加问题,一个解决把list添加进去。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> retlist = new ArrayList<ArrayList<Integer>>();
if(root == null){
//retlist.add(list);
return retlist;
}
Queue<TreeNode> q =new LinkedList<TreeNode>();
q.offer(root);
while(!q.isEmpty()){
Queue<TreeNode> next =new LinkedList<TreeNode>();
list = new ArrayList<Integer>();
while(!q.isEmpty()){
TreeNode t = q.poll();
list.add(t.val);
if(t.left != null)
next.offer(t.left);
if(t.right != null)
next.offer(t.right);
}
q = next;
retlist.add(list);
}
return retlist;
}
}
结果
Submit Time | Status | Run Time | Language |
---|---|---|---|
3 minutes ago | Accepted | 468 ms | java |