如何从二叉搜索树的给定后序遍历中找到前序遍历

时间:2019-01-17 19:05:25

标签: python python-3.x

我有一个像[3,6,5,1,12,16,15,10,20,7]这样的BST的后序遍历,我想找到它的像[7,1]这样的前序遍历,5,3,6,20,10,15,12,16]。 是否可以在不构建树的情况下找到递归解决方案? [编辑]

1 个答案:

答案 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])