1. 程式人生 > >領釦(LeetCode)N叉樹的層序遍歷 個人題解

領釦(LeetCode)N叉樹的層序遍歷 個人題解

給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。

例如,給定一個 3叉樹 :

 

 

返回其層序遍歷:

[
     [1],
     [3,2,4],
     [5,6]
]

 

說明:

  1. 樹的深度不會超過 1000
  2. 樹的節點總數不會超過 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 }