代码实现,读入先序,中序,输出后序 先序: A B D F C E G H 中序: B F D A G E H C 代码实现选择排序
时间: 2024-11-13 17:19:41 浏览: 5
为了实现从给定的先序遍历(Preorder)和中序遍历(Inorder)恢复一棵二叉树,并进一步生成其后序遍历(Postorder),我们需要使用递归。这里提供一个Python版本的示例:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def build_tree(preorder, inorder):
if not preorder or not inorder:
return None
# 根据先序遍历找到根节点
root_val = preorder[0]
root = TreeNode(root_val)
# 查找根节点在中序遍历中的位置
root_index = inorder.index(root_val)
# 递归构建左子树和右子树
root.left = build_tree(preorder[1:root_index + 1], inorder[:root_index])
root.right = build_tree(preorder[root_index + 1:], inorder[root_index + 1:])
return root
# 示例数据
preorder = ['A', 'B', 'D', 'F', 'C', 'E', 'G', 'H']
inorder = ['B', 'F', 'D', 'A', 'G', 'E', 'H', 'C']
# 构建二叉树
tree = build_tree(preorder, inorder)
def postorder_traversal(node):
if node is None:
return []
return postorder_traversal(node.left) + postorder_traversal(node.right) + [node.val]
# 获取后序遍历结果
postorder = postorder_traversal(tree)
print("后序遍历:", postorder)
```
运行上述代码后,会得到后序遍历的结果。请注意,这个例子假设输入的先序和中序遍历都是有效的,实际应用中需要处理边界情况。
阅读全文