题目:
给定一棵二叉树的中序遍历和后序遍历序列,请计算它的先序遍历序列。(假设树的节点由不同的大写字母表示,长度不超过8)。
输入格式:
每个测试文件包含一组测试数据。每组输入包含两行:
- 第一行是一个字符串,表示二叉树的中序遍历。
- 第二行是一个字符串,表示二叉树的后序遍历。输出格式:
对于每组测试数据,请输出二叉树的先序遍历序列。示例:
输入:
BADC
BDCA输出:
ABCD
- def preOrder(inOrder, postOrder):
- # 如果中序遍历为空,则结束递归
- if not inOrder:
- return
- # 后序遍历的最后一个元素是根节点
- root = postOrder[-1]
- print(root, end='') # 打印根节点
- rootIndex = inOrder.index(root) # 获取根节点在中序遍历中的位置
-
- # 递归遍历左子树
- preOrder(inOrder[:rootIndex], postOrder[:rootIndex])
- # 递归遍历右子树
- preOrder(inOrder[rootIndex+1:], postOrder[rootIndex:-1])
-
-
- # 读取输入的中序和后序遍历序列
- A = input()
- B = input()
- preOrder(A, B) # 调用函数并打印先序遍历结果
在这段代码中,通过递归的方式来遍历二叉树的左右子树,并且输出先序遍历的序列。