后序遍历根节点在最后一位,然后根据数值大小判断左树和右树,根据大小规则输出是否正确
# 在二叉搜索 树中 左子树节点小于根节点
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if sequence==[]:
return False
length=len(sequence)
root=sequence[-1]
for i in range(length):
if sequence[i]>root:
break
# 二叉搜索树中右子树的节点都大于根节点
for j in range(i,length):
if sequence[j]<root:
return False
# 判断左子树是否为二叉树
left=True
if i>0:
left=self.VerifySquenceOfBST(sequence[0:i])
# 判断 右子树是否为二叉树
right=True
if i<length-1:
right=self.VerifySquenceOfBST(sequence[i:-1])
return left and right