层次遍历二叉树

发布于 2023-06-11 20:09:37 字数 1200 浏览 37 评论 0

层次遍历二叉树是一种广度优先搜索的方法,它按层次顺序遍历二叉树的节点,从根节点开始,每一层从左到右遍历。具体的实现方法可以借助于队列,步骤如下:

  1. 将根节点加入队列。
  2. 当队列非空时,重复以下步骤:
    • 弹出队列的队首元素,并访问该节点。
    • 如果该节点有左儿子,将左儿子加入队列。
    • 如果该节点有右儿子,将右儿子加入队列。
  3. 遍历完成后,所有节点都被访问过。

以下是一个示例代码:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def level_order(root: TreeNode) -> List[List[int]]:
    if not root:
        return []

    result = []
    queue = [root]

    while queue:
        level = []
        size = len(queue)
        for i in range(size):
            node = queue.pop(0)
            level.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)
        result.append(level)

    return result

这个函数接受一个根节点的参数,返回一个二维列表,其中每一行代表一层节点的值。该函数首先创建一个空列表 result 和一个队列 queue ,将根节点加入队列。在循环中,首先弹出队列的队首元素,并将其值加入到当前层的列表 level 中,然后将其左儿子和右儿子加入队列中。在每一次循环结束后,将当前层的列表加入到 result 中,直到队列为空。最后返回 result 列表即可。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

七婞

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

13886483628

文章 0 评论 0

流年已逝

文章 0 评论 0

℡寂寞咖啡

文章 0 评论 0

笑看君怀她人

文章 0 评论 0

wkeithbarry

文章 0 评论 0

素手挽清风

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文