二叉搜索树的后序遍历序列
参考答案
问题解析
思路:根据二叉搜索树的性质递归判断数组是否符合该性质,符合则输出yes,不符合则输出no
二叉搜索树是对一个有序数组进行二分查找形成的搜索树,它指一棵空树或者具有下列性质的二叉树:
若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉搜索树。
# -*- coding:utf-8 -*-
class Solution:
def VerifySquenceOfBST(self, sequence):
# write code here
if len(sequence)==0:
return False
for i in range(len(sequence)):
if sequence[i] >= sequence[-1]:
index = i
break
for j in range(index, len(sequence)-1):
if sequence[j] < sequence[-1]:
return False
left = True
right = True
if len(sequence[:index])>0:
left = self.VerifySquenceOfBST(sequence[:index])
if len(sequence[index:-1])>0:
right = self.VerifySquenceOfBST(sequence[index:-1])
return left and right