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
  • 相关阅读:
    Lookup注解
    解决数据量大,分页查询慢的方案
    一个http的请求分析
    MYSQL
    什么是性能优化
    编码规范随笔
    装饰者模式
    单例模式
    J.U.C并发包(1)
    Java内存模型
  • 原文地址:https://www.cnblogs.com/yanmk/p/9219761.html
Copyright © 2011-2022 走看看