二叉搜索树左节点小于中间节点,右节点大于中间节点,后序遍历是左右中,所以最后一个是root,前面比root小的左节点都在前半段list,后半段是右节点,然后递归。
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if not sequence:
return False
if len(sequence)==1:
return True
root=sequence[-1]
num=0
for i in range(len(sequence)):
if sequence[i]<root:
num+=1
else:
break
for j in range(num,len(sequence)-1):
if sequence[j]<=root:
return False
left=sequence[:num]
right=sequence[num:len(sequence)-1]
flag_l=True
flag_r=True
if left:
flag_l=self.VerifySquenceOfBST(left)
if right:
flag_r=self.VerifySquenceOfBST(right)
return flag_r and flag_l