📌  相关文章
📜  打印与二叉树每个级别的级别值对应的节点(1)

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

打印二叉树每个级别的级别值对应的节点

本文介绍如何打印二叉树每个级别的级别值对应的节点。这样可以帮助我们更好地理解二叉树的结构,以及对其中的数据进行分析和处理。

问题描述

给定一个二叉树,打印出每个级别的级别值对应的节点。例如,对于下面的二叉树:

     1
   /   \
  2     3
 / \   / \
4   5 6   7

输出:

Level 0: 1
Level 1: 2 3
Level 2: 4 5 6 7
解决方案

为了打印每个级别的节点,我们需要遍历整个二叉树,并记录每个节点所在的级别。这里我们可以使用层次遍历来实现。

具体步骤如下:

  1. 定义一个队列,用于存储节点和它所在的级别。
  2. 将根节点和它所在的级别(0)入队。
  3. 循环遍历队列,直到队列为空:
  • 出队队列中的一个节点和它的级别。
  • 将当前节点的值加入到相应的级别列表中。
  • 如果当前节点有左右子节点,则将左右子节点和它们对应的级别入队。
  1. 打印每个级别和对应的节点。

下面是Python实现代码:

def print_levels(root):
    levels = []
    q = [(root,0)]
    while q:
        node,level = q.pop(0)
        if len(levels) == level:
            levels.append([])
        levels[level].append(node.val)
        if node.left:
            q.append((node.left,level+1))
        if node.right:
            q.append((node.right,level+1))
    for i, level in enumerate(levels):
        print("Level {}: {}".format(i, " ".join(str(x) for x in level)))

这段代码接受一个二叉树的根节点作为参数,输出每个级别和对应的节点。

总结

本文介绍了如何打印二叉树每个级别的级别值对应的节点。通过使用层次遍历,我们可以轻松地获得每个节点所在的级别,并将它们按级别分类,最终打印出每个级别和对应的节点。