博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指Offer】23二叉搜索树的后序遍历序列
阅读量:5097 次
发布时间:2019-06-13

本文共 983 字,大约阅读时间需要 3 分钟。

题目描述

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

时间限制:1秒;空间限制:32768K

解题思路

BST后序遍历的特点是:

大小:L树 < Root <R树

排序:L树 -- R树 -- Root

因此如果一个序列是合法的BST的后序序列,那么满足以下条件:

1、最后一个元素是根节点root

2、root前面的序列可以分为两段:前一段序列是左子树,值都小于root值;后一段序列是右子树,值都大于root值

3、这两段序列也都是合法的BST的后序序列

可以用递归的思路求解本题,Python代码:

# -*- coding:utf-8 -*-class Solution:    def VerifySquenceOfBST(self, sequence):        # write code here        if sequence == None or sequence == []:            return False        root = sequence[-1]        length = len(sequence)        # 在二叉搜索树中左子树节点小于根节点        for i in range(length):            if sequence[i]>root:                break        # 二叉搜索树中右子树的节点都大于根节点        for j in range(i,length-1):            if sequence[j]<=root:                return False        # 判断左子树是否为二叉树        left = True        if  i>0:            left = self.VerifySquenceOfBST(sequence[0:i])        # 判断右子树是否为二叉树        right = True        if i

 

转载于:https://www.cnblogs.com/yucen/p/9912037.html

你可能感兴趣的文章
NOIP的基本模板进阶
查看>>
学习进度条
查看>>
python练习七十:图片生成
查看>>
hdu 4609 3-idiots
查看>>
Bitbucket免费的私有仓库
查看>>
LeetCode20:validParentheses
查看>>
zookeeper应用:屏障、队列、分布式锁
查看>>
03.makefile(上)
查看>>
软工个人总结
查看>>
如何将u盘、移动硬盘转化为活动分区--绝招
查看>>
MYSQL 5.7 修改密码、登录问题
查看>>
linux 同步时间 调试core内核
查看>>
PAT Basic 1085
查看>>
ios app真正的相互!!调用
查看>>
B-tree
查看>>
springMVC传递一组对象的接受方式
查看>>
收藏一个虚函数表以及虚表指针介绍的文章
查看>>
POJ---2492 A Bug's Life[并查集]
查看>>
[BZOJ1195] [HNOI2006]最短母串
查看>>
final阶段140字评论
查看>>