跳到主要内容

简述如何实现二叉树层序遍历 ?

参考答案:

二叉树的层序遍历是一种重要的遍历方式,其遍历顺序是逐层访问,即先访问根节点,然后逐层向下访问。在二叉树层序遍历的实现中,我们可以使用队列(Queue)这一数据结构。

下面是一个基本的 Python 实现:

from collections import deque

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

def levelOrder(root):
    if not root:
        return []

    result, queue = [], deque([root])

    while queue:
        level_size = len(queue)
        current_level = []

        for _ in range(level_size):
            node = queue.popleft()
            current_level.append(node.val)

            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

        result.append(current_level)

    return result

在这个代码中,我们首先检查根节点是否存在。如果不存在,我们就返回一个空列表。然后,我们创建一个结果列表 result 和一个队列 queue,将根节点放入队列。

然后,我们开始一个 while 循环,只要队列不为空,我们就继续循环。在每一次循环中,我们首先获取当前队列的长度(也就是当前层的节点数量),然后遍历这一层的所有节点。对于每一个节点,我们将其值添加到当前层的列表中,然后如果它有左子节点或右子节点,我们将这些子节点添加到队列中。这样,在下一次循环中,我们就可以访问下一层的节点了。

当遍历完一层的所有节点后,我们将当前层的列表添加到结果列表中,然后继续处理下一层。当队列为空时,说明我们已经遍历完了所有的节点,此时我们就可以返回结果列表了。

这样,我们就实现了二叉树的层序遍历。