剑指Offer:面试题24——二叉搜索树的后序遍历序列(java实现)
来源:互联网 发布:在淘宝卖茶叶 编辑:程序博客网 时间:2024/06/01 15:48
问题描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。
思路:
1.首先后序遍历的结果是[(左子树的后序)(右子树的后序)根结点],那么我们首先找到了根结点的值,
2.其次,我们知道二叉搜索树的性质是:任何结点的左子树的值小于根结点的值,小于右子树的值。
3.因此,从后向前遍历,找到第一个小于root.val的,下标为index, 若index == n-1(n为数组的长度),则显然不满足,返回false, 否则我们可以将数组划分出来[(左子树的后序)(右子树的后序)根结点]。
4.最后对左右子树递归的判断即可。(但是这里要注意左子树或右子树为空的情况)
代码:
public boolean VerifySquenceOfBST(int [] sequence) { if(sequence == null || sequence.length == 0){ return false; } int n = sequence.length; if(n == 1 || n == 2){ return true; } int index = -1; for(int i = n-2; i >= 0; i--){ if(sequence[i] < sequence[n-1]){ index = i; break; } } int[] left = new int[index+1]; int[] right = new int[n-2-index]; for(int i = 0; i <= index; i++){ if(sequence[i] > sequence[n-1]){ return false; } left[i] = sequence[i]; } for(int i = index+1; i< n-1; i++){ right[i-index-1] = sequence[i]; } if(index == n - 2 && left.length != 0){ return VerifySquenceOfBST(left); } if(left.length == 0){ return VerifySquenceOfBST(right); } if(right.length == 0){ return VerifySquenceOfBST(left); } return VerifySquenceOfBST(left) && VerifySquenceOfBST(right); }
0 0
- 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现
- 剑指Offer:面试题24——二叉搜索树的后序遍历序列(java实现)
- 剑指offer——面试题24:二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 剑指Offer面试题24(Java版):二叉搜索树的后序遍历序列
- 剑指offer代码解析——面试题24二叉搜索树的后序遍历序列
- [剑指offer][面试题24]二叉搜索树的后序遍历序列
- 【剑指offer】面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 剑指offer-面试题24:二叉搜索树的后序遍历序列
- 剑指offer之面试题24:二叉搜索树的后序遍历序列
- 剑指Offer----面试题24:二叉搜索树的后序遍历序列
- 剑指offer-面试题24:二叉搜索树的后序遍历序列
- 剑指offer面试题24:二叉搜索树的后序遍历序列
- 剑指offer面试题24:二叉搜索树的后序遍历序列
- Express架构
- 文字 11种HTML5和CSS3炫酷文字样式和鼠标滑过特效
- DFA算法去重效果
- html5 canvas 2d 绘图学习笔记
- 信息技术优质课评价标准
- 剑指Offer:面试题24——二叉搜索树的后序遍历序列(java实现)
- ABAP 比较字符串 和数字串
- 图像处理板卡设计Virtex4+3TS201
- 【推荐】代码高亮JS框架之HelloWorld
- wordpress指定内容分享到微博后才显示之share to view all插件及其自动分享到微博的实现
- css水平居中方法
- mysql和oracle数据库引擎介绍
- hashmap源码层面分析
- Android社交系统