zoukankan      html  css  js  c++  java
  • 剑指offer——python【第23题】二叉搜索树的后序遍历序列

    题目描述

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    解题思路

    首先要清楚,这道题不是让你去判断一个给定的数组是不是一个(原先)给定的二叉搜索树的对应后序遍历的结果,而是判断一个给定的数组是不是能够对应到一个具体的二叉搜索树的后序遍历结果

    所以还是用递归的思想。

    把数组分成三部分,比如[4,8,6,12,16,14,10],10就是根节点,4,8,6都是左子树,12,16,14,10都是右子树,然后针对左右子树再去判断是不是符合根节点、左右子树这一个规律(左子树都比根节点小,右子树都比根节点大)

    代码

    class Solution:
        def VerifySquenceOfBST(self,sequence):
            # write code here
            if len(sequence)==0:
                return False
            index = 0
            for i in range(len(sequence)):
                if sequence[i]>sequence[-1]:
                    index = i
                    break
            for j in range(i,len(sequence)):
                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

     

    人生苦短,何不用python
  • 相关阅读:
    异步与回调的设计哲学
    CTF之PHP黑魔法总结
    图片隐写分离
    phpMyadmin各版本漏洞
    python 多线程
    order by name 注入
    Python lambda
    Python os.popen() 方法
    你和大牛差了啥
    Error: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.
  • 原文地址:https://www.cnblogs.com/yqpy/p/9748966.html
Copyright © 2011-2022 走看看