剑指offer 24. 二叉搜索树的后序遍历序列
2017-05-09 08:59
316 查看
// 题目:输入一个数组,判断是不是二叉搜索树的后序遍历结果 // 解法:最后一个结点是根结点,前面所有结点小于根节点,后面所有节点大于根节点值 public class Main { public static void main(String[] args) { System.out.println(checkSeq(new int[] { 5,7,9,11,10,8})); } private static boolean checkSeq(int[] input) { if(input.length <= 0){ return false; } int cut = -1; int value = input[input.length-1]; for(int i = 0;i<input.length-1;i++){ //找到左子树和右子树的分界点 if(input[i]>=value){ cut = i; break; } } if(cut == -1){ //如果只有左子树则直接成功 return true; } for(int i = cut;i<input.length-1;i++){ //如果右子树有结点比根节点小,则直接返回false if(input[i]<=value){ return false; } } boolean left = true; if(cut>0){ left = checkSeq(Arrays.copyOfRange(input, 0, cut)); //考虑左边的数组 } boolean right = true; if(cut<input.length-1){ right = checkSeq(Arrays.copyOfRange(input, cut, input.length-1)); //检查右边的数组 } return left && right; } }
相关文章推荐
- 剑指offer-面试题24.二叉搜索树的后序遍历序列
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer:(25)举例让抽象问题具体化 :二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列 (剑指Offer 第 22 题)
- 剑指Offer-二叉搜索树的后序遍历序列
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- (十六)剑指offer之二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 剑指Offer——(23)二叉搜索树的后序遍历序列
- 从剑指offer -- 二叉搜索树的后序遍历序列 -- 看二叉搜索树的遍历
- 剑指offer:二叉搜索树的后序遍历序列
- 剑指offer刷题之java实现的二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列
- 剑指offer-23-二叉搜索树的后序遍历序列