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
  • 相关阅读:
    2-2. 然后是几点(15)
    2-1. 厘米换算英尺英寸(15)
    2-0. 整数四则运算(10)
    忙碌的下半学期
    ACM 第十九天
    ACM 第十八天
    ACM 第十七天
    凸包模板
    极角排序常用方法
    ACM 第十六天
  • 原文地址:https://www.cnblogs.com/yqpy/p/9748966.html
Copyright © 2011-2022 走看看