# -*- coding:utf-8 -*- class Solution: def VerifySquenceOfBST(self, sequence): # write code here # 先判断边界 if sequence == []: return False root = sequence[-1] index = None del sequence[-1] # 先寻找index也就是左右子树的分割index,如果找到分割点后还能遍历到比分割点小的元素,说明不能构成二叉搜索树 for i in range(len(sequence)): if index==None and sequence[i]>root: index = i if index!=None and sequence[i]<root: return False # 采用递归的方式找左右子树,需要判断sequence[:index]是否为空 if sequence[:index] == []: leftRet = True else: leftRet = self.VerifySquenceOfBST(sequence[:index]) if sequence[index:] == []: rightRet = True else: rightRet = self.VerifySquenceOfBST(sequence[index:]) return rightRet and rightRet
原文:https://www.cnblogs.com/ivyharding/p/11356718.html