📅  最后修改于: 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
属性表示节点的值,以及 left
和 right
属性表示节点的左右子树。
然后定义了一个 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)
在输出结果中,每个节点的值后面跟着它所在的层级,用括号括起来。