返回
二叉树层序遍历的技巧:基础到实战全攻略
前端
2024-01-04 02:20:27
今天,我们来学习一个新的话题——二叉树的层序遍历。层序遍历是一种非常重要的算法,它可以帮助我们以一种有条理的方式遍历二叉树中的所有节点。
层序遍历的定义
层序遍历,也称为广度优先搜索(BFS),是一种从根节点开始,依次遍历同一层的节点,然后再遍历下一层的节点的遍历方式。
层序遍历的步骤
- 将根节点入队。
- 循环执行以下步骤,直到队列为空:
- 将队首节点出队。
- 将队首节点的左子节点入队。
- 将队首节点的右子节点入队。
层序遍历的例子
让我们通过一个例子来理解层序遍历。如下图所示,我们有一个二叉树:
1
/ \
2 3
/ \ / \
4 5 6 7
如果我们对这棵二叉树进行层序遍历,我们会得到以下结果:
1
2 3
4 5 6 7
层序遍历的代码实现
以下是层序遍历的代码实现:
def level_order_traversal(root):
queue = [root]
result = []
while queue:
node = queue.pop(0)
result.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result
扩展:N叉树的层序遍历
N叉树的层序遍历与二叉树的层序遍历非常相似。唯一的区别在于,N叉树的每个节点可以有多个子节点,而二叉树的每个节点只有两个子节点。
以下是N叉树的层序遍历的代码实现:
def level_order_traversal(root):
queue = [root]
result = []
while queue:
level_size = len(queue)
for i in range(level_size):
node = queue.pop(0)
result.append(node.val)
for child in node.children:
queue.append(child)
return result
总结
层序遍历是一种非常重要的算法,它可以帮助我们以一种有条理的方式遍历二叉树或N叉树中的所有节点。在本文中,我们介绍了层序遍历的定义、步骤、例子和代码实现。我们还讨论了如何将层序遍历扩展到N叉树。希望这篇文章能帮助你更好地理解层序遍历算法。