题目:
给你二叉树的根节点
root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例 2:
输入:root = [1] 输出:[[1]]示例 3:
输入:root = [] 输出:[]提示:
- 树中节点数目在范围
[0, 2000]
内-1000 <= Node.val <= 1000
解题思路:
如果根节点为空,则直接返回空列表。否则定义一个队列来存放根节点,循环遍历队列,当队列为空时结束循环。在循环中,首先获取队列的长度,再定义一个空列表result来存放当前层次的节点的值,再根据队列的长度来循环存放每一层次的值。在此次循环中,首先删除队列第一个值并获得此值,然后将值存入result中,再判断该值对应的节点左右子树是否为空,若不为空,则存入队列中,来进行以后的循环。最后循环结束返回结果。
程序代码:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if not root:
return []
self=[]
queue=[root]
while queue:
size=len(queue)
result=[]
for i in range(size):
x=queue.pop(0)
result.append(x.val)
if x.left:
queue.append(x.left)
if x.right:
queue.append(x.right)
self.append(result)
return self
运行结果: