class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if len(sequence) == 0:
return False
else:
root = sequence[-1]
del sequence[-1]
lefttree = []
righttree =[]
# 左子树和右子树分界
splitindex = -1
for i in range(len(sequence)):
# 值小于根结点的归为左子树
if sequence[i] < root:
lefttree.append(sequence[i])
splitindex = i
else:
break
for i in range(splitindex+1, len(sequence)):
# 若右子树部分有小于根结点的值,说明不是二叉搜索树
if sequence[i] > root:
righttree.append(sequence[i])
else:
return False
if len(lefttree) <= 1:
left = True
else:
# 递归判断左子树
left = self.VerifySquenceOfBST(lefttree)
if len(righttree) <= 1:
right = True
else:
right = self.VerifySquenceOfBST(righttree)
return left and right