剑指offer33.二叉搜索树的后续遍历序列

判断一个数组是不是二叉搜索树的后序遍历结果

思路:二叉搜索树的后序遍历序列中,最后一个数字是树的根节点的值。数组中前面的数字可以分为两部分:第一部分是左子树节点的值,他们都比根节点的值小;第二部分是右子树节点的值,他们都比根节点的值大。用同样的方法确定与数组每一部分对应的子树的结构

class Solution:
    def verifySequenceOfBST(self, sequence):
        """
        :type sequence: List[int]
        :rtype: bool
        """
        if len(sequence) == 0:
            return True
        root = sequence[-1]
        for index,element in enumerate(sequence):
            i = index
            if element>root:
                break
        for element in sequence[i:]:
            if element<root:
                return False
        left =True
        if i>0:
            left = self.verifySequenceOfBST(sequence[:i])
        right=True
        if i<len(sequence)-1:
            right = self.verifySequenceOfBST(sequence[i:-1])
        return left and right
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容