⼆叉树的层序遍历
解法: 队列
层序遍历的顺序为自上而下,从左到右,遍历每一层的所有节点。
以根节点开始,自上而下遍历,在每一层,获取每个节点的左右指针,得到的非空值的个数,即为下一层节点的个数,将非空值入队,根据个数进行循环、出队获取节点值,并将每一层的节点的值存放在一个临时列表内,当前层循环结束后将该列表添加进返回值列表内。迭代至树的最后一层,结束并返回值
代码如下:
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
rtn=[]
query=[root]
while query:
faker=[]
size=len(query)
for _ in range(size):
x=query.pop(0)
faker.append(x.val)
if x.left:
query.append(x.left)
if x.right:
query.append(x.right)
rtn.append(faker)
return rtn