Java 判断一个序列是否是搜索二叉树的后序遍历结果
2017-04-15 18:46
281 查看
//思路最后一个节点是二叉树的根节点,前面一些节点小于这个节点,后面节点大于这个节点 //如果后面一些节点有小于这个节点值的节点,那么就不是二叉搜索树的后序遍历,作为程序的退出点 //找到cut点,递归的执行这个函数 public class Main { public static void main(String[] args) { int[] array = { 5, 7, 6, 9, 11, 10, 8 ,111}; // int[] array = { 7, 4, 6, 5 }; // int[] array={6,7,8,5}; System.out.println(verfiySequenceOfBST(array)); } public static boolean verfiySequenceOfBST(int[] input) { if(input == null || input.length == 0){ return false; } int last = input.length-1; int cut = 0; for(int i = 0;i<input.length-1;i++){ if(input[i]>input[last]){ break; } cut = i+1; } for(int i = cut;i<input.length-1;i++){ if(input[i]<input[last]){ return false; } } boolean left = true; boolean right = true; if(cut>0){ left = verfiySequenceOfBST(Arrays.copyOfRange(input, 0, cut)); } if(cut<input.length-1){ right = verfiySequenceOfBST(Arrays.copyOfRange(input,cut,input.length-1)); } return left && right; } }
相关文章推荐
- 【面试题】剑指offer24--判断一个序列是否为二叉树的后序遍历
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
- 剑指offer解题报告(Java版)——判断一个数组是否是二叉搜索树的后序遍历序列 24
- 剑指offer24判断某一序列是否是某一搜索二叉树的后续遍历结果
- Java代码 给出一个二叉树和一个数,判断该二叉树是否存在一个从根节点到叶节点的和与给出的数相同
- 判断一个序列是否是一棵二叉树的后序遍历序列(分治算法)
- java判断一个序列是否可能是另外一个压栈序列的弹出序列
- 《剑指offer》:[24]判断一个序列是否为二叉树的后序遍历序列
- 剑指off-判断一个数组是不是搜索二叉树的后序遍历的序列
- 用Java代码写一个判断两个二叉树是否相同
- Java 判断一个点是否在多边形区域内【转】
- java判断一个程序是否已经运行
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- [SQL,Java]判断某一个已知表名的表是否在数据库中存在的方法
- java中判断一个字符串是否是数
- 【100题】给定入栈序列,判断一个序列是否可能为输出序列
- java如何判断一个linux下的文件是否为链接文件。
- 从键盘上读取一个年份,判断是否为闰年(JAVA)
- Java中怎样判断一个字符串是否是数字