21. 构造二叉树
find()方法
在Python中,str.find(sub[, start[, end]]) 方法用于查找子字符串 sub 在字符串中首次出现的位置,返回其起始索引。如果未找到,返回 -1
class Tree:
def __init__(self,val=None,left=None,right=None):
self.left = left
self.right = right
self.val = val
def make_tree(pre_order,mid_order):
if not pre_order or not mid_order:
return None
idx = mid_order.find(pre_order[0])
left = make_tree(pre_order[1:idx+1],mid_order[:idx])
right = make_tree(pre_order[idx+1:],mid_order[idx+1:])
# head = Tree(val=head,left=left,right=right)
return Tree(val=pre_order[0],left=left,right=right)
def behind_order(head):
if head is None:
return []
left = behind_order(head.left)
right = behind_order(head.right)
val = head.val
return left + right + [val]
while True:
try:
pre_order,mid_order = map(str,input().split(' '))
# head = make_tree(pre_order,mid_order)
# print(behind_order(make_tree(pre_order,mid_order)))
print(''.join(behind_order(make_tree(pre_order,mid_order))))
except:
break