题目
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
提示: 0 <= 二叉树的结点数 <= 1500
示例1
输入:{1,2}
返回值:[[1],[2]]
解题思路
1.先将根节点放入队列中
2.遍历该节点是否有孩子节点,如果有将该节点出队,并将孩子节点放入队列中
其中的关键是需要确定每层的个数
题解
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型二维数组
#
import queue
class Solution:
def levelOrder(self , root: TreeNode) -> List[List[int]]:
l=[]
q = queue.Queue()
level_num=1
next_num=0
count=1
# 1.先将根节点放入队列中
if root!= None:q.put(root)
new_l=[]
# 2.遍历该节点是否有孩子节点,如果有将该节点出队,并将孩子节点放入队列中
while q.empty()== False:
new_root = q.get()
new_l.append(new_root.val)
level_num-=1
# 如果该节点有左子树
if new_root.left!=None:
q.put(new_root.left)
next_num+=1
# 如果该节点有右子树
if new_root.right!=None:
q.put(new_root.right)
next_num+=1
# 当该层级遍历完成
if level_num==0:
count+=1
l.append(new_l)
new_l=[]
level_num = next_num
next_num = 0
return l