解题思路:
用两个队列轮番记录每一层的结点
时间复杂度:O(n)
空间复杂度:O(n)
提交代码:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res=new ArrayList<List<Integer>>();
if(root==null) return res;
Queue<TreeNode> q1=new LinkedList<>();
Queue<TreeNode> q2=new LinkedList<>();
q1.add(root);
while(q1.size()!=0||q2.size()!=0) {
List<Integer> level1=new ArrayList<>();
while(q1.size()>0) {
TreeNode tmp=q1.poll();
level1.add(tmp.val);
if(tmp.left!=null)
q2.add(tmp.left);
if(tmp.right!=null)
q2.add(tmp.right);
}
if(level1.size()!=0)
res.add(level1);
List<Integer> level2=new ArrayList<>();
while(q2.size()>0) {
TreeNode tmp=q2.poll();
level2.add(tmp.val);
if(tmp.left!=null)
q1.add(tmp.left);
if(tmp.right!=null)
q1.add(tmp.right);
}
if(level2.size()!=0)
res.add(level2);
}
return res;
}
}
运行结果: