剑指offer-二叉搜索树的后序遍历序列(python)

二叉搜索树左节点小于中间节点,右节点大于中间节点,后序遍历是左右中,所以最后一个是root,前面比root小的左节点都在前半段list,后半段是右节点,然后递归。

# -*- coding:utf-8 -*-
class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        if not sequence:
            return False
        if len(sequence)==1:
            return True
        root=sequence[-1]
        num=0
        for i in range(len(sequence)):
            if sequence[i]<root:
                num+=1
            else:
                break
        for j in range(num,len(sequence)-1):
            if sequence[j]<=root:
                return False
        left=sequence[:num]
        right=sequence[num:len(sequence)-1]
        flag_l=True
        flag_r=True
        if left:
            flag_l=self.VerifySquenceOfBST(left)
        if right:
            flag_r=self.VerifySquenceOfBST(right)
        return flag_r and flag_l
发布了69 篇原创文章 · 获赞 46 · 访问量 5267

猜你喜欢

转载自blog.csdn.net/qq_42738654/article/details/104238007