题目内容
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题目思路
对于一个搜索树来说,最后一个元素是它的根。对于抛去根意外的元素序列可以分为两部分。前一部分是比根小的,后一部分是比根大的。如果能够分开就迭代直到长度为0或者1,如果不能就说明不是。
程序代码
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
lgt=len(sequence)
if lgt==0:
return False
else:
return self.isBST(sequence)
def isBST(self,sequence):
lgt=len(sequence)
if lgt==0 or lgt==1:
return True
root=sequence[-1]
left,right=[],[]
for i in range(lgt-1):
if sequence[i]<root:
left.append(sequence[i])
else:
break
for j in range(i,lgt-1):
if sequence[i]>root:
right.append(sequence[j])
else:
return False
return self.isBST(left) and self.isBST(right)