剑指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.假设输入的数组的任意两个数字都互不相同. ...
随机推荐
- UVA11882-Biggest Number(DFS+最优化剪枝)
Problem UVA11882-Biggest Number Accept: 177 Submit: 3117Time Limit: 1000 mSec Memory Limit : 1 ...
- Md5的生成
1.使用hashlib包(一) import hashlib src = 'anthing' m1 = hash.new() m1.update(src) print (m1.hexdigest()) ...
- [matlab] 3.矩阵
matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有. 事实上,matlab里面所有变量都是以矩阵的形式保存下来的. %% >> x=[1:2.1:10] x = 1.0000 ...
- 【ECMAScript5】ECMAScript5中有关数组的常用方法
1.indexOf() 此方法返回在改数组中第一个找到的元素位置,如果它不存在则返回-1 var arr = ['apple','orange','pear']; console.log(" ...
- 关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用
好久没有用这个日志了,最近WannaCry横行,媒体铺天盖地的报道,我这后知后觉的才想起来研究下WannaCry利用的这个原产于美帝的国家安全局发现的漏洞,发现漏洞不说,可以,自己偷偷 ...
- org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '&' 后面
错误信息如下:org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 ‘’&’’ 后面 出现这个错误的原因是在xml中使用&,实际上xml中不支 ...
- hdu4966 GGS-DDU
hdu4966 GGS-DDU 有 \(n\) 个课程,每种课程有 \(a_i\) 级,一开始你每种课程都为 \(0\) 级,有 \(m\) 个升级方案:\((x,\ l1,\ y,\ l2,\ c) ...
- springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback
springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- 安装NVIDIA
安装NVIDIA显卡驱动 $ ubuntu-drivers devices; $ sudo apt install nvidia-340 (安装指定版本) 重启系统: $ nvidia-smi (查看 ...