剑指offer_二叉树_二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列

在这里插入图片描述
参考答案
问题解析
思路:根据二叉搜索树的性质递归判断数组是否符合该性质,符合则输出yes,不符合则输出no

二叉搜索树是对一个有序数组进行二分查找形成的搜索树,它指一棵空树或者具有下列性质的二叉树:

若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
任意节点的左、右子树也分别为二叉搜索树。

# -*- coding:utf-8 -*-
class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        if len(sequence)==0:
            return 0
        index = 0
        for i in range(len(sequence)):
            if sequence[i] > sequence[-1]:
                index = i
                break
        for j in range(i, 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
发布了31 篇原创文章 · 获赞 0 · 访问量 724

猜你喜欢

转载自blog.csdn.net/freedomUSTB/article/details/105105507