题目
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
解题思路
先判断树是否为空,是则返回空的list,否则:
- 在level中放入根节点:
- 当level不为空时,将level中的节点的值放入;
- 取出level的左右子节点;
- 判断这些子节点是否为空,空则跳过,否则更新level,继续循环。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
if root is None:
return res;
level = [root]
while level:
res.append([node.val for node in level])
internode = []
for node in level:
internode.extend([node.left, node.right])
level = [leaf for leaf in internode if leaf]
return res