以下是一个按层打印树的示例代码:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def printTreeByLevel(root):
if not root:
return
queue = [root] # 使用队列来存储每一层的节点
while queue:
level_size = len(queue) # 当前层的节点数量
for _ in range(level_size):
node = queue.pop(0) # 弹出队列中的节点
print(node.val, end=" ") # 打印节点值
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
print() # 打印换行
使用示例:
# 创建一个示例二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
# 按层打印二叉树
printTreeByLevel(root)
输出结果:
1
2 3
4 5 6 7
以上代码使用队列来实现按层打印树的功能。首先将根节点放入队列中,然后进入循环,每次从队列中弹出一个节点,并打印节点值。同时将该节点的左右子节点(如果存在)放入队列中。这样就能保证按层打印树的顺序。当队列为空时,表示所有节点已经打印完毕。
上一篇:按层次顺序对模型抽象类进行建模