已知一个二叉树的中序遍历序列和后序遍历序列,求这棵树的前序遍历序列。 【输入形式】 一个树的中序遍历序列 该树后序遍历序列,中间用空格分开。输入序列中仅含有小写字母,且没有重复的字母 【输出形式】 一个树的前序遍历序列
时间: 2024-05-04 11:16:35 浏览: 86
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
5星 · 资源好评率100%
此问题属于二叉树遍历问题,可以使用递归的方法进行求解。
以下为Python 3的代码实现:
```
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(inorder, postorder):
if not postorder:
return None
# 后序遍历的最后一个元素为根节点
root_val = postorder[-1]
root = TreeNode(root_val)
root_index = inorder.index(root_val)
# 划分左右子树
inorder_left = inorder[:root_index]
inorder_right = inorder[root_index + 1:]
postorder_left = postorder[:len(inorder_left)]
postorder_right = postorder[len(inorder_left):-1]
root.left = buildTree(inorder_left, postorder_left)
root.right = buildTree(inorder_right, postorder_right)
return root
def preorderTraversal(root):
if not root:
return []
result = []
result.append(root.val)
result += preorderTraversal(root.left)
result += preorderTraversal(root.right)
return result
inorder = input().split()
postorder = input().split()
root = buildTree(inorder, postorder)
preorder = preorderTraversal(root)
print(" ".join(preorder))
```
输入示例:
```
d b e a f c
d e b f c a
```
输出示例:
```
a b d e c f
```
阅读全文