题目描述
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路
- 解法一:递归。DFS。
- 解法二:迭代。BFS。
代码
解法一:递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: levels = [] if root is None: return levels def helper(node, level): if level == len(levels): levels.append([]) levels[level].append(node.val) if node.left is not None: helper(node.left, level + 1) if node.right is not None: helper(node.right, level + 1) helper(root, 0) return levels
|
执行用时 : 100 ms
内存消耗 : 14.7 MB
解法二:迭代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: levels = [] if root is None: return levels queue = [root] level = 0 while queue: levels.append([]) length = len(queue) for _ in range(length): node = queue.pop(0) levels[level].append(node.val) if node.left is not None: queue.append(node.left) if node.right is not None: queue.append(node.right) level += 1 return levels
|
执行用时 : 56 ms
内存消耗 : 14 MB