1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public List<List<Integer>> levelOrder(Node root) { List<List<Integer>> ans = new ArrayList<>(); helper(root, ans, 0); return ans; }
private void helper(Node node, List<List<Integer>> ans, int level) { if (node == null) { return; } if (level == ans.size()) { ans.add(new ArrayList<>()); } ans.get(level).add(node.val); for (Node child : node.children) { helper(child, ans, level + 1); } } }
|
DFS.
时间复杂度: O(n)
空间复杂度: O(h) h是树的高度, 最worst就是skewed tree也就是O(n)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public List<List<Integer>> levelOrder(Node root) { if (root == null) { return new ArrayList<>(); } List<List<Integer>> ans = new ArrayList<>(); Deque<Node> q = new ArrayDeque<>(); q.offer(root); while (!q.isEmpty()) { List<Integer> currLayer = new ArrayList<>(); for (int i = q.size(); i > 0; i--) { Node currNode = q.poll(); currLayer.add(currNode.val); q.addAll(currNode.children); } ans.add(currLayer); } return ans; } }
|
BFS的做法.
时间复杂度: O(n)
空间复杂度: O(n)