题目如下:

解题:使用队列
步骤(例题中):
1、将 根节点(3)得左右节点值 9、20 组合为一个数组 (【9,20】)
2、将节点(9)得左右节点值组合为一个数组(【null,null】)
3、将节点(20)得左右节点值组合为一个数组 (【15,7】)
咱们可以这样想:
将二叉树转换为目标数组:【3,9,20,null,null,15,7】
起始数组:start = []
将3加入 stat([3]),然后判断3得左右节点是否存在,存在则将左右节点加入 start,否则不做操作,这样可以过滤空节点。
start = [3]
start = [3,9,20]
start = [3,9,20,15,7]
上述操作便遍历了每一层节点得值,然而我们需要将每一层得节点值组合为一个数组,使用t1 来存储每一层得值
t1 = [3] --> [3]
t2 = [9,20] --> [t1,9,20]
t3 = [15,7] --> [t2,15,7]
可以清晰得看到一个规律(根节点除外),每次我们得目标值数组 tn = start - t(n-1)
这就很自然得想到了使用队列进行操作,每次将t[n-1]出队即可 出队得范围使用for 进行限制即可。
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
start = [root]
req = [] //返回结果
while start:
t1 = [] //存放当前层所有节点值,所以每次需要先置为空
leng = len(start) //每一层节点得个数
for i in range(leng): // 将t(n-1)出队
node = start.pop(0)
t1.append(node.val)
//如果左右节点存在,则添加到队列中
if node.left:
start.append(node.left)
if node.right:
start.append(node.right)
if t1:
req.append(t1)
return req