本质上和二叉树的遍历一样,这里我仍然采用递归的方法来层序遍历
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public static List<List<Integer>> result=new ArrayList<>();
public List<List<Integer>> levelOrder(Node root) {
result=new ArrayList<>();
selfTree(root,0);
return result;
}
public static void selfTree(Node root,int deep){
if(root==null)return;
deep++;
if(result.size()<deep){
List<Integer> cur=new ArrayList<>();
result.add(cur);
}
//遍历子树集合,本质上和二叉树一样
result.get(deep-1).add(root.val);
for (Node child : root.children) {
selfTree(child,deep);
}
}
}