我有一个像[3,6,5,1,12,16,15,10,20,7]这样的BST的后序遍历,我想找到它的像[7,1]这样的前序遍历,5,3,6,20,10,15,12,16]。 是否可以在不构建树的情况下找到递归解决方案? [编辑]
答案 0 :(得分:0)
这是不构建树的递归函数。它从头到尾遍历邮政订单列表,因为它表示几乎所需的顺序,除了以相反的顺序访问子项之外:
def preordered(postorder):
def recur(granny, parent):
if not postorder or postorder[-1] < min(granny, parent):
return []
value = postorder.pop()
right = recur(parent, value)
left = recur(parent, value)
return [value] + left + right
low = min(postorder)
postorder = postorder[:]
return recur(low, low)
result = preordered([3,6,5,1,12,16,15,10,20,7])