zoukankan      html  css  js  c++  java
  • 剑指offer 面试33题

    面试33题:
    题:二叉搜索树的后序遍历序列

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

    解题思路:递归

    解题代码:

    # -*- coding:utf-8 -*-
    class Solution:
        def VerifySquenceOfBST(self, sequence):
            # write code here
            if not sequence or len(sequence)<=0:
                return False
            root=sequence[-1]
            i=0
            
            #找出左小右大的分界点i,此时i属于右子树
            for node in sequence[:-1]:
                if node > root:
                    break
                i+=1
            
            #如果在右子树中有比根节点小的值,直接返回False
            for node in sequence[i:-1]:
                if node < root:
                    return False
            #判断左子树是否为二叉搜索树
            left=True
            if i>0:
                left=self.VerifySquenceOfBST(sequence[:i])
            #判断右子树是否为二叉搜索树
            right=True
            if i<len(sequence)-1:
                right=self.VerifySquenceOfBST(sequence[i:-1])

         return left and right
  • 相关阅读:
    webstrom破解的问题
    redis高级应用(1)
    linux之软链接、硬链接
    爬虫之scrapy、scrapy-redis
    爬虫之xpath、selenuim
    爬虫之Beautifulsoup模块
    爬虫之Reuqests模块使用
    测试项目配置
    Cleary基础
    Redis基础
  • 原文地址:https://www.cnblogs.com/yanmk/p/9219761.html
Copyright © 2011-2022 走看看