領釦(LeetCode)N叉樹的層序遍歷 個人題解
阿新 • • 發佈:2018-12-09
給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。
例如,給定一個 3叉樹
:
返回其層序遍歷:
[ [1], [3,2,4], [5,6] ]
說明:
- 樹的深度不會超過
1000
。 - 樹的節點總數不會超過
5000
。
二叉樹的層序遍歷的升級版,做法思路類似,使用佇列存放當前層的所有節點,遍歷所有層。可以參考我往期的二叉樹層次遍歷的做法 https://www.cnblogs.com/axiangcoding/p/10013327.html
本題程式碼如下:
1 class Solution { 2 public List<List<Integer>> levelOrder(Node root) { 3 if(root==null) 4 return null; 5 List<List<Integer>> ans=new ArrayList<>(); 6 Queue<Node> queue=new LinkedList<>(); 7 queue.add(root);8 while(!queue.isEmpty()) 9 { 10 List<Integer> secans=new ArrayList<>(); 11 Queue<Node> qtmp=new LinkedList<>(); 12 while(!queue.isEmpty()) 13 { 14 Node ntmp=queue.poll(); 15 secans.add(ntmp.val);16 List<Node> chil=ntmp.children; 17 for(int i=0;i<chil.size();i++) 18 { 19 if(chil.get(i)!=null) 20 qtmp.add(chil.get(i)); 21 } 22 } 23 queue=qtmp; 24 ans.add(secans); 25 } 26 return ans; 27 } 28 29 }