垂直输出二叉树完整代码
时间: 2024-12-04 14:14:02 浏览: 10
垂直输出二叉树是一种常见的数据结构表示方法,它将二叉树按照从上到下、从左到右的顺序逐层打印,使得每一行的节点都按照从左到右的顺序排列。以下是一个简单的Python代码示例,用于实现这个功能:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def vertical_order(root):
if not root:
return []
# 使用队列存储每层的节点
from collections import deque
queue = deque([(root, 0)])
# 结果列表,每一项是一个二维元组 (row, col, node.val)
result = []
while queue:
node, level = queue.popleft()
# 如果当前层有值,添加到结果中
if node:
result.append((level, node.val))
# 将子节点加入队列,注意水平方向递增
if node.left:
queue.append((node.left, level - 1))
if node.right:
queue.append((node.right, level + 1))
return result
# 示例
# 定义一个二叉树
root = TreeNode(1,
TreeNode(2,
TreeNode(4),
TreeNode(5)),
TreeNode(3,
TreeNode(6)))
# 输出垂直顺序的结果
print(vertical_order(root))
```
当你运行这段代码,它会输出一个二维列表,如 `[(1, 1, 1), (1, 2, 2), (1, 3, 3), (2, 1, 4), (2, 2, 5), (3, 1, 6)]`,这表示二叉树的层次结构。
阅读全文