剑指offer(18)二叉搜索树的后续遍历
题目;
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:
以最后一个节点为根,从头往后找到第一个大于根节点的,接下来判断这个位置到根节点前是否都是大于根节点的数,然后在把这两个部分用上述方式处理。
public class Solution {
public boolean VerifySquenceOfBST(int [] sequence) {
if(sequence.length==0)
return false;
if(sequence.length==1)
return true;
return VerifySquenceOfBST(sequence,0,sequence.length-1);
}
private boolean VerifySquenceOfBST(int a[],int start,int end){
if(start==end)
return true;
int root = a[end];
int i = start;
for(;i<end;i++){
if(a[i]>root)
break;
}
int j = i;
for(;j<end-1;j++){
if(a[j]<root)
return false;
}
boolean left=true;
if(i>0)
left = VerifySquenceOfBST(a,0,i-1);
boolean right=true;
if(i<end-1)
right = VerifySquenceOfBST(a,i,end-1);
return left&&right;
}
}
= =下次再加上其他解法
剑指offer(18)二叉搜索树的后续遍历的更多相关文章
- 剑指offer:二叉搜索树的后续遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 根据二叉搜索的性质,后序遍历是先搜索 ...
- 剑指offer之 二叉搜索树的后续遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution { ...
- 剑指offer系列21--二叉搜索树的后续遍历序列
* 21[题目]输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果. * 如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. * [注]二叉搜索树特点:左子树比根结 ...
- 《剑指offer》二叉搜索树的后序遍历序列
本题来自<剑指offer> 二叉搜索树的后序遍历序列 题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字 ...
- 剑指Offer:二叉搜索树的后序遍历序列【33】
剑指Offer:二叉搜索树的后序遍历序列[33] 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. ...
- 剑指 Offer 36. 二叉搜索树与双向链表 + 中序遍历 + 二叉排序树
剑指 Offer 36. 二叉搜索树与双向链表 Offer_36 题目描述 题解分析 本题考查的是二叉树的中序遍历以及二叉排序树的特征(二叉排序树的中序遍历序列是升序序列) 利用排序二叉树中序遍历的性 ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列 + 根据二叉树的后序遍历序列判断对应的二叉树是否存在
剑指 Offer 33. 二叉搜索树的后序遍历序列 Offer_33 题目详情 题解分析 本题需要注意的是,这是基于一颗二叉排序树的题目,根据排序二叉树的定义,中序遍历序列就是数据从小到大的排序序列. ...
- 剑指 Offer 36. 二叉搜索树与双向链表
剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的 ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. ...
随机推荐
- SQL Alias(别名)
通过使用 SQL,可以为列名称和表名称指定别名(Alias). SQL Alias 表的 SQL Alias 语法 SELECT column_name(s) FROM table_name AS a ...
- python六十九课——网络编程之TCP协议
1.1 概述: TCP协议通过三次握手协议将客户端与服务器端连接,两端使用各自的Socket对象.Socket对象中包含了IO流,供数据传输. 即:TCP协议在客户端与服务器端通过Socket组成了I ...
- centos7下安装docker(17docker监控---docker自带监控命令)
Docker自带的监控子命令 1.docker ps:docker ps -a这是我们常用的查看容器状态的命令 docker container ls和docker ps的功能一样 2.docker ...
- ajax @requestBody
前端: $.ajax({ type: "POST", contentType: "application/json;charset=UTF-8", url: R ...
- Google Colab 基本操作
## 上传 from google.colab import files uploaded = files.upload() for fn in uploaded.keys(): print('Use ...
- Sql优化器究竟帮你做了哪些工作
https://my.oschina.net/u/1859679?tab=newest&catalogId=597012 上一篇,我们介绍了<DB——数据的读取和存储方式>,这篇聊 ...
- lelnet爱一直在
[root@elk3 ~]# telnet 192.168.122.135 22 Trying 192.168.122.135... 这意味着telnet 没有收到任何回应来建立连接.有两个可能的原因 ...
- 利用BBED恢复数据文件头
转载请注明出处:http: @@@@@@@利用BBED模拟损坏5文件1号块(文件头) BBED block block ) Block: Dba:0x01400001 ---------------- ...
- 分区默认segment大小变化(64k—>8M)
_partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%8 ...
- CentOS 安装 clang
Clang是一个C语言.C++.Objective-C.Objective-C++语言的轻量级编译器.源代码发布于BSD协议下.2013年4 月,Clang已经全面支持C++11标准,并开始实现C++ ...