问题描述
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
两行,每行一个字符串,分别表示中序和后序排列
输出格式
一个字符串,表示所求先序排列
样例输入
BADC
BDCA
样例输出
ABCD
容易出错的测试样例
样例输入
ABC
CBA
样例输出
ABC
解题思路
(4条消息) 蓝桥杯:二叉树求先序遍历,已知中序,后序遍历,递归解法_AKGWSB 's blog-优快云博客https://blog.youkuaiyun.com/weixin_44176696/article/details/103988849 我找了很多题解,但是没找到一个是用python做的。。。。我懂蓝桥杯才有python组没几年呢。所以我找了一个c++的代码改了改,嘤嘤嘤,如果你觉得python做oj的题不咋行,那一定是你不造python独有的方法。。。。。比如说切片、字典、列表等等。
代码
ldr = input()#中序
lrd = input()#后序
def dfs(ldr,lrd):
if ldr!="":
len1 = len(lrd)
root = lrd[len1 - 1]
print(root,end="")
root_index = ldr.find(root)
ldr_left = ldr[0:root_index]
ldr_right = ldr[root_index + 1:len1]
# print("ldr_left=",ldr_left)
# print("ldr_right=",ldr_right)
len_left = len(ldr_left)
len_right = len(ldr_right)
lrd_left = lrd[0:len_left]
lrd_right = lrd[len_left:len1-1]
# print("lrd_left=",lrd_left)
# print("lrd_right=",lrd_right)
if (len_left > 0):
dfs(ldr_left, lrd_left)
if (len_right > 0):
dfs(ldr_right, lrd_right)
dfs(ldr,lrd)