[剑指offer] 23. 二叉搜索树的后序遍历序列
题目描述
思路:
class Solution
{
public:
bool VerifySquenceOfBST(vector<int> sequence)
{
if (sequence.empty())
return false;
return helper(sequence, , sequence.size() - );
}
bool helper(vector<int> seq, int beg, int end)
{
if (beg >=end)
return true;
int root = seq[end];
int i = beg;
while (seq[i] < root)
{
i++;
}
int j = i;
while (j < end)
{
if (seq[j] < root)
{
return false;
}
j++;
}
return helper(seq, beg, i - ) && helper(seq, i, end - );
}
};
解法二:非递归
同样的,去除数组最后一个值,也就是根,数组分为左右子树两部分。
此时数组最右边的值是右子树的根节点,大于所有左子树的值。同时,右子树部分中,所有右子树元素都大于该值。
于是判断右子树是否符合条件即可。
class Solution
{
public:
bool VerifySquenceOfBST(vector<int> sequence)
{
int j = sequence.size();
if (j == )
return false; int i = ;
while (--j)
{
while (sequence[i++] < sequence[j])
;
while (sequence[i++] > sequence[j])
; if (i < j)
return false;
i = ;
}
return true;
}
};
[剑指offer] 23. 二叉搜索树的后序遍历序列的更多相关文章
- 剑指Offer 23. 二叉搜索树的后序遍历序列 (二叉搜索树)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 题目地址 https://www.nowcoder ...
- 《剑指offer》二叉搜索树的后序遍历序列
本题来自<剑指offer> 二叉搜索树的后序遍历序列 题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字 ...
- 剑指Offer:二叉搜索树的后序遍历序列【33】
剑指Offer:二叉搜索树的后序遍历序列[33] 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列 + 根据二叉树的后序遍历序列判断对应的二叉树是否存在
剑指 Offer 33. 二叉搜索树的后序遍历序列 Offer_33 题目详情 题解分析 本题需要注意的是,这是基于一颗二叉排序树的题目,根据排序二叉树的定义,中序遍历序列就是数据从小到大的排序序列. ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. ...
- 【剑指Offer】二叉搜索树的后序遍历序列 解题报告(Python)
[剑指Offer]二叉搜索树的后序遍历序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervi ...
- 【剑指offer】二叉搜索树的后序遍历序列
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26092725 剑指offer上的第24题,主要考察递归思想,九度OJ上AC. 题目描写叙述 ...
- 【Java】 剑指offer(33) 二叉搜索树的后序遍历序列
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如 ...
- Go语言实现:【剑指offer】二叉搜索树的后序遍历序列
该题目来源于牛客网<剑指offer>专题. 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. Go ...
随机推荐
- Linux --- 程序后台运行的几种方法
有时候我们运行一个程序,耗时比较长,所以在快下班的时候或是网络不稳定的时候就比较抓狂. 今天分享几个我在工作中用到的把程序放在后台运行的方法. nohup $ nohup --h Usage: noh ...
- Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例
OpenSSL for Windows In earlier articles, we have looked at how to create a gcc build environment on ...
- CDC-更改数据捕获存储过程 (Transact-SQL)-学习
背景: 在SQLServer2008之前,对数据变更的捕获通常使用触发器.时间戳等低效高成本的功能来实现,所以很多系统都没有做数据变更或者仅仅对核心表做监控. 适用环境: 仅在SQLServer200 ...
- 全量导入数据 导致solr内存溢出 崩溃问题解决
在 data-config.xml 文件中 增加一个参数即可: batchSize="-1"
- Oracle_虚拟机安装教程
需修改两个东西 一个为内存 内存改为4G 一个为加载CD/DVD文件 DVD文件为:Centos 6.9镜像 改完这两个东西之后 再启动 启动成功之后 Oracle虚拟机登录密码为 root 1234 ...
- Python连载7-time包的其他函数
接连载6 一.time包 1.函数:sleep(second) (1)含义:是程序进入休眠状态多少秒 (2)格式:time.sleep(int num) 2.函数:strftime() (1)含义:将 ...
- Python Re 模块超全解读!
re模块下的函数 compile(pattern):创建模式对象 import repat=re.compile('A')m=pat.search('CBA') ...
- 附008.Kubernetes TLS证书介绍及创建
一 Kubernetes证书 1.1 TLS Kubernetes系统的各个组件需要使用TLS证书对其通信加密以及授权认证,建议在部署之前先生成相关的TLS证书. 1.2 CA证书创建方式 kuber ...
- VUE单页面的应用优缺点
1.优 分离前后端关注点,前端负责界面显示,后端负责数据存储和计算. 减轻服务器压力,服务器只用出数据就可以: 同一套后端程序代码,不用修改就可以用于多种设备客户端: 2019-06-19用户体验好. ...
- 简单DI
<?php class DI { private $container; public function set($key, $obj, ...$args) { $this->contai ...