題目描述
輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出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