簡體   English   中英

如何從二叉搜索樹的給定后序遍歷中找到前序遍歷

[英]How to find preorder traversal from given postorder traversal of binary search tree

我有一個像 [3,6,5,1,12,16,15,10,20,7] 這樣的 BST 的后序遍歷,我想找到它像 [7,1,5, 3、6、20、10、15、12、16]。 是否可以在不構造樹的情況下找到遞歸解決方案? [編輯]

這是一個沒有構建樹的遞歸函數。 它從末尾到開頭遍歷后順序列表,因為這幾乎代表了所需的順序,除了以相反順序訪問子項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM