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

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

二叉树的中到上下顺序遍历

二叉树的中到上下顺序遍历是一种常用的二叉树遍历方式,它可以按照从上到下、从左到右的顺序遍历二叉树。这种遍历方式可以用于查找二叉树中某一层的节点,或者输出整个二叉树的层级结构。

算法描述

使用数组或队列来存储二叉树的节点,在遍历的过程中,将每一层的节点逐个输出即可。

具体步骤如下:

  1. 将根节点加入队列中,初始化当前层级为0。
  2. 循环遍历队列中的节点,每次取出节点时将其左右子节点加入队列中,同时记录它们所在的层级。
  3. 如果当前层级等于之前记录的层级,说明当前节点与之前节点在同一层级上,只需将其加入当前层级的数组中即可。
  4. 如果当前层级不等于之前记录的层级,说明当前节点在下一层级上,需要先将当前层级的数组输出,然后再将当前节点加入新的层级数组中。
  5. 当队列为空时,说明遍历完成,输出最后一层的节点数组即可。
代码实现

下面给出Python语言的实现代码,其中我们使用了一个queue队列来存储节点,以及一个level来记录当前层级。

def levelOrder(root):
    if not root: return []
    res, level = [], 0
    queue = [(root, 0)]
    while queue:
        node, cur_level = queue.pop(0)
        if cur_level == level:
            res[level].append(node.val)
        else:
            res.append([node.val])
            level = cur_level
        if node.left:
            queue.append((node.left, cur_level + 1))
        if node.right:
            queue.append((node.right, cur_level + 1))
    return res
总结

二叉树的中到上下顺序遍历是一种比较常用的遍历方式,可以用于查找某一层级的节点,或者输出整个二叉树的层级结构。在实现的过程中,我们使用了数组和队列来存储节点和层级,同时维护了一个level来记录当前层级。