如何水平输出二叉树
- 编程技术
- 2025-02-01 15:03:39
- 1
水平输出二叉树通常指的是以图形化的方式在水平方向上展示二叉树的结构。以下是一些常见的方法和步骤: 方法一:使用BFS(广度优先搜索)1. 初始化:创建一个队列,并将根节...
水平输出二叉树通常指的是以图形化的方式在水平方向上展示二叉树的结构。以下是一些常见的方法和步骤:
方法一:使用BFS(广度优先搜索)
1. 初始化:创建一个队列,并将根节点入队。
2. 遍历:当队列为空时停止。
当队列不为空时,取出队首元素。
将该节点打印出来。
将该节点的左右子节点(如果存在)依次入队。
方法二:使用递归
1. 确定树的宽度:遍历整棵树,记录每个节点到根节点的最大距离。
2. 递归打印:对于每个节点,根据其到根节点的距离打印空格,然后打印节点。
以下是使用Python实现水平输出二叉树的示例代码:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def print_tree(root):
if not root:
return
获取树的宽度
def get_width(node, level, width):
if not node:
return width
width[level] = max(width[level], width)
width = get_width(node.left, level + 1, width)
width = get_width(node.right, level + 1, width)
return width
获取树的宽度
width = [0]
get_width(root, 0, width)
打印树
for i in range(width[0]):
print(' ' i, end='')
def print_node(node, level):
if not node:
return
if level >= width[0]:
return
print_node(node.left, level + 1)
print(node.val, end=' ')
print_node(node.right, level + 1)
print_node(root, 0)
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)
水平输出二叉树
print_tree(root)
```
以上代码将创建一个简单的二叉树,并使用递归方法水平输出它的结构。你可以根据需要修改这个代码来适应不同的二叉树结构。
本文链接:http://xinin56.com/bian/420061.html
下一篇:河北哪些中专有升学班