码农小汪-剑指Offer之21-二叉搜索树的后序遍历序列
来源:互联网 发布:第八课网络旅行 编辑:程序博客网 时间:2024/06/05 20:40
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题解
首先我们得知道后序遍历的特点,我们的遍历后的字串被分为了三部分,左右根,此题中的二叉搜素树是一个有循序的,很有规律。左边的比右边的大。知道这个之后呢。我们肯定要用递归遍历这个字符串,分成几部分进行不断的缩小处理。直到我们可以处理为止。有点像归并排序的特点。非常的像。
package JianzhiOffer;public class Slution21 { /** * 后序遍历的思路 * 左右中间的,可是二叉树是(叉搜索树,二叉排序树 ) * 这个树很有特点,最后一个数把我们的前面的分为两半边,只要都是满足就成功了 * @param sequence * @return */ public boolean VerifySquenceOfBST(int[] sequence) { if(sequence.length==0){ return false; } int start=0; int end=sequence.length-1; return findWrong(sequence, start, end); } public boolean findWrong(int[]sequence,int start,int end){ if(start>=end){ //都相聚在一起了肯定成功啦 return true; } int i,j; for( i=start;i<end;i++){ if(sequence[i]>sequence[end]){ //前面的肯定比我们 的最后个元素小 break; } //找到分界线之后,只要发现还有比最后个小的就是说明不是后序遍历 } for(j=i;j<end;j++){ if(sequence[j]<sequence[end]){ return false; } } /** * 递归的去寻找这种状态 */ return findWrong(sequence,start,i-1)&&findWrong(sequence,i,end-1); }}
0 0
- 码农小汪-剑指Offer之21-二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指Offer-->二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指 offer:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列||剑指offer
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- [剑指offer]二叉搜索树的后序遍历序列
- 《剑指offer》-二叉搜索树的后序遍历序列
- Android_Short_Key
- glibc---memcpy源码
- 黑马程序员——JAVA学习日志之多线程(二)以及简单的单例和工厂模式
- c++第二次试验
- 利用chrome快速查找st中的组件
- 码农小汪-剑指Offer之21-二叉搜索树的后序遍历序列
- 栈-链表的实现
- Android Studio 学习 2
- android Spinner控件详解
- Java的类属性和实例属性
- mybatis 注解和xml的使用
- PHP中实现页面刷新或跳转的方法
- 【LeetCode-338】 Counting Bits
- 孤儿进程和僵尸进程