码农小汪-剑指Offer之21-二叉搜索树的后序遍历序列
2016-03-30 22:08
141 查看
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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); } }
相关文章推荐
- 阿里巴巴测试开发工程师面试记录
- Android 程序员计算器 开发记录-Git版本控制初步接触
- OC 面试问题汇总
- 面试的一些小经验
- 剑指offer-面试题19:二叉树的镜像
- 面试题70:二叉搜索树第K大的结点*
- 码农小汪-剑指Offer之20-从上往下打印二叉树
- PHP中提问频率最高的面试题和答案
- 码农小汪-剑指Offer之19-栈的压入、弹出序列
- 201603月份面试总结
- IT行业导览-第5章-职业规划
- Java线程面试题 Top 50
- 面试题69:序列化二叉树
- 职场加薪步步高升的五大法则
- 网易游戏面试经验(二)
- 腾讯面试记录
- Java程序员必须掌握的8大排序算法
- IOS学习之——面试问题集锦
- 码农小汪-剑指Offer之18-包含min函数的栈
- 阿里电话面试经历