題目描述
輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。
分析:
用遞歸實現。先把root節點拿出來,再把數組分成左右子樹
解答:
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if not sequence:
return False
if len(sequence)==1 or len(sequence)==2:
return True
left=[]
right=[]
root=sequence.pop()
for i in range(len(sequence)):
if root < sequence[i]:
left=sequence[:i]
right=sequence[i:]
break
for i in right:
if i<=root:
return False
verify=True
if left:
verify&=self.VerifySquenceOfBST(left)
if right:
verify&=self.VerifySquenceOfBST(right)
return verify
