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] ]
思路:采用队列记录上一层结点,然后通过遍历该队列,生成下一层结点的集合。
</pre>/**<br /> * Definition for a binary tree node.<br /> * public class TreeNode {<br /> * int val;<br /> * TreeNode left;<br /> * TreeNode right;<br /> * TreeNode(int x) { val = x; }<br /> * }<br /> */<br />public class Solution {<br /> public List<List<Integer>> levelOrder(TreeNode root) {<br /> <br /> List<List<Integer>> res=new ArrayList<List<Integer>>();<br /> if(root==null) return res;<br /> List<TreeNode> last=new ArrayList<TreeNode>();<br /> last.add(root);<br /> // List<Integer> rl=new ArrayList<Integer>();<br /> //rl.add(root.val);<br /> // res.add(rl);<br /> while(!last.isEmpty())<br /> {<br /> List<Integer> cur=new ArrayList<Integer>();<br /> List<TreeNode> cur_Deque=new ArrayList<TreeNode>();<br /> for(TreeNode node: last)<br /> {<br /> cur.add(node.val);<br /> }<br /> for(TreeNode node: last){<br /> if(node.left!=null ) {<br /> cur_Deque.add(node.left);<br /> }<br /> if(node.right!=null){<br /> cur_Deque.add(node.right);<br /> } <br /> }<br /> last=new ArrayList<TreeNode>(cur_Deque);<br /> res.add(cur);<br /> }<br /> return res;<br /> }<br />}<br />