题目描述
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
总结
DC和SC思路相同,不过在进入新一层的添加新的ArrayList的时候写法不同,我的还是太龙鸣思维了
Sample Code
public class Solution{
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> result = new ArrayList<>();
dfs(root, 0, result);
return result;
}
public void dfs(Node root, int depth, List<List<Integer>> result){
if(root != null){
if(result.size() < depth + 1)
result.add(depth, new ArrayList<Integer>());
result.get(depth).add(root.val);
depth++;
for(Node child: root.children)
dfs(child, depth, result);
}
}
}
Demo Code
class Solution {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> res = new ArrayList<>();
dfs(res, root, 0);
return res;
}
private void dfs(List<List<Integer>> list, Node root, int index) {
if(root == null) return;
if(index >= list.size()) {
List<Integer> temp = new ArrayList<>();
temp.add(root.val);
list.add(temp);
}else {
list.get(index).add(root.val);
}
for(Node c : root.children) {
dfs(list, c, index+1);
}
}
}