给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
思路
利用队列,广度优先搜索
根据前一层儿子的数目,知道下一次有几个节点,
进而知道每一层
# 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]]:
if not root:
return []
size = 1
nextsize = 0
qu = [root]
i = 0
anss = []
ans = []
while i<len(qu):
d = qu[i]
ans.append(d.val)
size -= 1
if d.left:
qu.append(d.left)
nextsize+=1
if d.right:
qu.append(d.right)
nextsize+=1
if size == 0:
anss.append(ans)
size = nextsize
nextsize =0
ans = []
i+=1
return anss