【leetcode】102.(Medium)Binary Tree Level Order Traversal
阿新 • • 發佈:2018-12-27
解題思路:
用兩個佇列輪番記錄每一層的結點
時間複雜度: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;
}
}
執行結果: