BST(二叉搜索树)
其特点是:每个节点的值大于其任意左侧子节点的值,小于其任意右节点的值。
基于此,BST树的中序遍历是一个由小到大的顺序序列
题目:
输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
#参考牛客网
if not sequence:
return False
if len(sequence)==1:
return True
length=len(sequence)
root=sequence[-1]
i=0
while sequence[i]<root:
i+=1
j = i
for k in range(j,length-1):
if sequence[k]<root:
return False
left_next = sequence[:j]
right_next = sequence[j:-1]
left = True
right = True
if len(left_next)>0:
left = self.VerifySquenceOfBST(left_next)
if len(right_next)>0:
right = self.VerifySquenceOfBST(right_next)
return left and right