📅  最后修改于: 2023-12-03 14:53:57.058000             🧑  作者: Mango
在二叉树中,层序遍历是一种逐层遍历节点的方法,是一种广度优先遍历。层序遍历可以按照从上到下、从左到右的顺序遍历,同时也可以逐层输出节点。
在层序遍历中,我们需要使用队列来存储节点,同时也需要使用一个当前遍历的层数来判断当前节点属于哪一层。
以下是使用 Python 语言实现层序遍历的代码:
def levelOrder(root):
# 如果根节点为空,直接返回空列表
if not root:
return []
# 创建一个队列,并将根节点入队
queue = [root]
# 初始化结果列表
res = []
# 当队列不为空时,循环遍历队列中的节点
while queue:
# 获取当前队列的长度,即为当前节点属于的层数
level_len = len(queue)
# 创建当前层的列表
cur_level = []
# 循环遍历当前层的节点
for i in range(level_len):
# 将当前节点出队,并将其值添加到当前层的列表中
node = queue.pop(0)
cur_level.append(node.val)
# 如果当前节点有左子节点,将其入队
if node.left:
queue.append(node.left)
# 如果当前节点有右子节点,将其入队
if node.right:
queue.append(node.right)
# 将当前层的列表添加到结果列表中
res.append(cur_level)
return res
上面的代码中,我们使用了一个队列来存储节点,并在循环遍历队列中的节点时,遍历了每一层的所有节点,因此时间复杂度为 $O(n)$。
同时,我们也使用了一个结果列表来存储每一层的节点,因此空间复杂度为 $O(n)$。
层序遍历是二叉树的一种重要遍历方法,其使用了队列来存储节点,并遍历了每一层的所有节点。在实现层序遍历时,需要考虑空节点的情况,并使用一个结果列表来存储每一层的节点。