链接:
https://ac.nowcoder.com/acm/problem/16692
思路
可以发现,后序排序的最后一个结点是根节点,以此可以对中序字符串进行拆分,根据根节点和中序排列找到左子树和右子树,然后继续递归,每次递归的时候将根节点打印出来就行了。
def tree(s1,s2):
lens = len(s1)
if(lens>0):
print(s2[-1],end='')#根节点
index = s1.find(s2[-1])
tree(s1[:index],s2[:index])#递归左子树
tree(s1[index+1:],s2[index:lens-1])#递归右子树
s1=input()
s2=input()
tree(s1,s2)
首先找到根节点的序号index,然后根据此找到左子树s1[:index]和s2[:index],以及右子树s1[index+1:]和s2[index:lens-1],先打印根节点,然后打印左子树,最后打印右子树,正好就是前序排列。