📜  二叉树的中到上到下遍历(1)

📅  最后修改于: 2023-12-03 15:36:03.431000             🧑  作者: Mango

二叉树的中到上到下遍历

在二叉树中,经常需要对其进行遍历操作。其中一种遍历方式是从上到下逐层遍历二叉树的节点,这种方式又称为二叉树的层次遍历。本文将介绍二叉树的中到上到下遍历的实现方法和代码示例。

基本原理

二叉树的中到上到下遍历,是通过队列实现的。遍历过程中,首先将根节点入队,然后依次将队头节点的左右子节点入队,再从队头进行出队操作,并将其值存入结果列表中。

代码示例

下面是二叉树的中到上到下遍历的 Python 代码实现:

class TreeNode:  # 定义二叉树节点
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


def levelOrder(root: TreeNode) -> List[List[int]]:
    if not root:
        return []
    res = []
    queue = [root]
    while queue:
        level = []
        level_size = len(queue)
        for i in range(level_size):
            cur_node = queue.pop(0)
            level.append(cur_node.val)
            if cur_node.left:
                queue.append(cur_node.left)
            if cur_node.right:
                queue.append(cur_node.right)
        res.append(level)
    return res

在代码中,首先定义了 TreeNode 类来表示二叉树的节点,包含值和左右子节点。然后定义了 levelOrder(root: TreeNode) -> List[List[int]] 函数来实现二叉树的中到上到下遍历。该函数接收一个根节点 root ,并返回一个包含每层节点值的列表列表 res

该函数的主要流程是:先判断根节点是否为空,如果为空则直接返回空列表;否则创建一个空列表 res 和一个存放节点的队列 queue。接着进行循环遍历,每次循环都定义一个空列表 level 和当前层的节点数量 level_size,并在循环中进行出队操作,将出队节点的值存入 level,并将其左右子节点入队。在循环完成后,将 level 加入 res 中,并重复以上操作,直至队列为空。最后返回结果列表 res

总结

二叉树的中到上到下遍历是一种较为常用的遍历方式,由于其实现方法简单且易理解,因此在开发中被广泛应用。在实现中,需要用到队列的操作,因此需要熟练掌握队列的相关知识。