题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
代码实现
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
if len(sequence)==0:
return False
if len(sequence)==1:
return True
l1=[]
l2=[]
root=sequence[-1]
i=0
while sequence[i]<root:
i+=1
k=i
for j in range(i,len(sequence)-1):
if sequence[j]<root:
return False
l1=sequence[:k]
l2=sequence[k:len(sequence)-1]
for i in l2:
if i<root:
return False
leftIs=True
rightIs=True
if len(l1)>0:
leftIs=self.VerifySquenceOfBST(l1)
if len(l2)>0:
rightIs=self.VerifySquenceOfBST(l2)
return leftIs and rightIs