![]()
# -*- 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