题意以及限制条件
- 题目:
- 限制条件:
想到的所有可能解法
-
Ways_1——DFS(递归)
- 时间复杂度——O(n);空间复杂度——O(n)。
-
Ways_2——BFS(使用队列)
- 时间复杂度——O(n);空间复杂度——O(n)。
对应的代码
- Ways_1
class Solution {
public List<List<Integer>> levelOrder(Node root) {
if (root != null) traverse(root, 0);
return res;
}
private List<List<Integer>> res = new ArrayList<List<Integer>>();
private void traverse(Node node, int level) {
if (res.size() <= level) res.add(new ArrayList<Integer>());
res.get(level).add(node.val);
for (Node children : node.children) {
traverse(children, level + 1);
}
}
}
- Ways_2
class Solution {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (root == null) return res;
Queue<Node> queue = new ArrayDeque<Node>();
queue.offer(root);
Node node = new Node();
while (!queue.isEmpty()) {
List<Integer> level = new ArrayList<Integer>();
int levelNum = queue.size();
for (int i = 0; i < levelNum; ++i) {
node = queue.poll();
level.add(node.val);
queue.addAll(node.children);
}
res.add(level);
}
return res;
}
}