写一个程序,递归建立二叉树,先序递归遍历二叉树,中序递归遍历二叉树,后序递归遍历二叉树,层次递归遍历二叉树
时间: 2024-11-23 17:23:58 浏览: 47
在Python中,我们可以创建一个简单的二叉树节点类,并用递归方法实现各种遍历。这里是一个示例:
```python
# 定义二叉树节点
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 递归构建二叉树(例如,给定一个列表)
def build_tree(values, index=0):
if index < len(values):
return TreeNode(values[index], build_tree(values, 2 * index + 1), build_tree(values, 2 * index + 2))
else:
return None
# 先序遍历(根-左-右)
def preorder_traversal(root):
if root is not None:
print(root.val)
preorder_traversal(root.left)
preorder_traversal(root.right)
# 中序遍历(左-根-右)
def inorder_traversal(root):
if root is not None:
inorder_traversal(root.left)
print(root.val)
inorder_traversal(root.right)
# 后序遍历(左-右-根)
def postorder_traversal(root):
if root is not None:
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.val)
# 层次遍历(广度优先搜索)
from collections import deque
def level_order_traversal(root):
if root is None:
return
queue = deque([root])
while queue:
node = queue.popleft()
print(node.val, end=' ')
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
# 创建一个二叉树实例并遍历
values = [1, 2, 3, 4, 5, 6]
root = build_tree(values)
print("Preorder:", " " .join(map(str, preorder_traversal(root))))
print("Inorder:", " " .join(map(str, inorder_traversal(root))))
print("Postorder:", " " .join(map(str, postorder_traversal(root))))
level_order_traversal(root)
```
在这个例子中,我们首先定义了一个`TreeNode`类,然后编写了四个递归函数用于遍历。最后,我们创建了一个二叉树并演示了如何使用这些函数进行遍历。
阅读全文
相关推荐














