1. 程式人生 > 實用技巧 >檢驗一個數組是否為查詢二叉樹的後序遍歷

檢驗一個數組是否為查詢二叉樹的後序遍歷

#如何檢驗一個數組是否為查詢二叉樹後序遍歷輸出
#1,將這個陣列顛倒後輸入查詢二叉樹,然後後序遍歷輸出,與原陣列次序相同,則表明原陣列為查詢二叉樹後續遍歷輸出
#2,查詢二叉樹後序遍歷輸出滿足:
# 1根節點在最後
# 2陣列前部小於根節點,後部大於根節點
# 3將陣列的前半部和後半部 又分別符合1,2,3;直至子節點為葉節點(無下一級子節點)
def IsPostorder(ltest=[]):
k=len(ltest)
if k==0: #若節點沒有子節點,則為真
return True
rootnode=ltest[-1]
LAnterior=[]
LSecond=[]
for i in range(0,len(ltest)-1):
if ltest[i]<=rootnode:
if i>k:#一旦小於根節點的數出現在大於根節點書的後面,則為否
return False
break
LAnterior.append(ltest[i])
else:
k=i
LSecond.append(ltest[i])
return IsPostorder(LAnterior) and IsPostorder(LSecond) #前後半部亦必須同時為真

Ltmp= [14, 13, 29, 22, 46, 33, 21, 71, 80, 83, 63, 67, 45, 99, 93, 85]
print(IsPostorder(Ltmp))

'''