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
  • 相关阅读:
    JavaScript (new)创建一个对象的过程
    我所理解的promise的then方法
    promise与async和await的区别
    JS Promise实例 then()方法
    电脑上不去网
    es6----set map应用场景
    ES6新特性一览
    es6继承
    es6中class类的全方面理解(一)
    时间处理金字教程
  • 原文地址:https://www.cnblogs.com/yqpy/p/9748966.html
Copyright © 2011-2022 走看看