[英]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.