返回
赏心悦目!用递归和BFS从上到下打印二叉树,层序遍历全攻略
前端
2023-09-09 04:53:56
层序遍历的魅力之旅
在计算机科学中,层序遍历(又称广度优先搜索,BFS)是一种遍历二叉树的方法,它将每一层的节点按从左到右的顺序依次访问。这种方法可以帮助我们更直观地了解二叉树的结构。
递归:经典之作
第一步,我们首先创建一个队列来存储当前层的节点,并将其推入队列中。
第二步,然后开始一层一层地遍历二叉树。在每一层,我们从队列中取出所有的节点,并将其子节点推入队列中。这样,下一层的节点就排好队了,等待着被访问。
第三步,最后,我们将每一层的节点从左到右依次打印出来。
BFS:另一种视角
除了递归之外,我们还可以使用广度优先搜索(BFS)来实现层序遍历。BFS是一种非递归的遍历方法,它通过队列来实现。
第一步,我们首先创建一个队列来存储当前层的节点,并将其推入队列中。
第二步,然后开始一层一层地遍历二叉树。在每一层,我们从队列中取出所有的节点,并将它们从左到右依次打印出来。
第三步,接着,我们将这些节点的子节点推入队列中。这样,下一层的节点就排好队了,等待着被访问。
第四步,重复步骤二和步骤三,直到队列为空。
Python代码实战
def level_order_traversal(root):
if not root:
return []
queue = [root]
result = []
while queue:
# 记录当前层的节点数
level_size = len(queue)
# 存储当前层的所有节点值
level_nodes = []
# 遍历当前层的所有节点
for _ in range(level_size):
# 出队当前节点
node = queue.pop(0)
# 将当前节点的值添加到本层节点列表
level_nodes.append(node.val)
# 将当前节点的子节点入队
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
# 将本层节点列表添加到结果列表
result.append(level_nodes)
return result
结语
在本文中,我们详细介绍了如何从上到下打印二叉树,同时涵盖递归和广度优先搜索(BFS)两种方法。希望这篇文章能够帮助您加深对层序遍历的理解,并将其应用到您的项目中。