1. 程式人生 > >【leetcode】102.(Medium)Binary Tree Level Order Traversal

【leetcode】102.(Medium)Binary Tree Level Order Traversal

解題思路:
用兩個佇列輪番記錄每一層的結點

時間複雜度: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; } }

執行結果:
在這裡插入圖片描述