返回

二叉树层序遍历的技巧:基础到实战全攻略

前端

今天,我们来学习一个新的话题——二叉树的层序遍历。层序遍历是一种非常重要的算法,它可以帮助我们以一种有条理的方式遍历二叉树中的所有节点。

层序遍历的定义

层序遍历,也称为广度优先搜索(BFS),是一种从根节点开始,依次遍历同一层的节点,然后再遍历下一层的节点的遍历方式。

层序遍历的步骤

  1. 将根节点入队。
  2. 循环执行以下步骤,直到队列为空:
    • 将队首节点出队。
    • 将队首节点的左子节点入队。
    • 将队首节点的右子节点入队。

层序遍历的例子

让我们通过一个例子来理解层序遍历。如下图所示,我们有一个二叉树:

        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叉树。希望这篇文章能帮助你更好地理解层序遍历算法。