📌  相关文章
📜  打印二叉树中所有节点的级别(1)

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

打印二叉树中所有节点的级别

打印二叉树中所有节点的级别可以帮助我们更好地了解树的结构并进行进一步的分析。在这里,我们将介绍如何完成这个任务的代码实现。

实现思路

打印二叉树中所有节点的级别可以通过遍历二叉树来实现。我们可以使用广度优先搜索(BFS)算法对二叉树进行层次遍历,从而得到每个节点的级别。

BFS 算法的基本思想是从根节点开始,按照层次顺序遍历每个节点。在遍历过程中,将每个节点的子节点按照它们出现的顺序加入队列中,保证每层节点按照从左到右的顺序被访问。

代码实现

下面是一个 Python 实现 BFS 算法遍历二叉树并打印出所有节点的级别的代码片段:

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

def print_level_order(root):
    if not root:
        return

    queue = [root]
    level = 0

    while queue:
        n = len(queue)

        for i in range(n):
            node = queue.pop(0)
            print(f"{node.val}({level})", end=" ")

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

        level += 1
        print()

# 示例
#        1
#      /   \
#     2     3
#    / \   / \
#   4   5 6   7
root = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5)), TreeNode(3, TreeNode(6), TreeNode(7)))
print_level_order(root)

在上面的代码中,我们首先定义了一个 TreeNode 类来表示二叉树的节点。每个节点包含一个 val 属性表示节点的值,以及 leftright 属性表示节点的左右子树。

然后定义了一个 print_level_order 函数来实现 BFS 算法的遍历。在遍历过程中,我们使用一个队列来存储每一层的节点,并使用一个 level 变量来记录当前的层数。每次从队列中取出一个节点时,先打印出它的值和级别,然后将它的子节点加入队列中。最后,更新 level 的值并打印一个换行符,以便在控制台输出中打印出每一层的节点。

最后,我们使用一个示例二叉树来测试我们的 print_level_order 函数。这个二叉树包含 7 个节点,分别为 1、2、3、4、5、6 和 7。它的层次遍历结果如下:

1(0) 
2(1) 3(1) 
4(2) 5(2) 6(2) 7(2)

在输出结果中,每个节点的值后面跟着它所在的层级,用括号括起来。