剑指offer-面试题24-二叉搜索树的后序遍历序列
2017-01-19 16:18
246 查看
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。
题目分析:在后序遍历得到的序列中,最后一个数值是树的根节点的值。在数组中的数字可以分为两部分,第一部分是左子树的结点的值,它们都比根值要小,第二部分是右子树的结点的值,它们都比根值要大。比如5,7,6,9,11,10,8.8是根节点,那么5,7,6是左子树,9,11,10是右子树。我们接下来采用同样的方法,确定与数组每一部分对应的子树结构。就是递归的过程。
//二叉搜索树的后序遍历序列 public static boolean isSequenceOfBST(int[] arr, int start, int end) { if (start >= end) { return true; } int index = start; while (index <= end - 1 && arr[index] < arr[end]) {//找到第一个比根节点大的元素位置 index++; } //[start,index-1]都是比根节点小的元素 //[index,end-1]都是比根节点大的元素 for (; index <= end - 1; index++) { if (arr[index] < arr[end]) { return false; } } boolean left = isSequenceOfBST(arr, start, index - 1); boolean right = isSequenceOfBST(arr, index, end); return left && right; }
相关文章推荐
- 一个关于if else容易迷惑的问题
- 一道sql面试题附答案
- C# 超高面试题收集整理
- 14 个折磨人的 JavaScript 面试题
- 人人网javascript面试题 可以提前实现下
- JS面试题---关于算法台阶的问题
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- 经典的20道AJAX面试题(必知必会)
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- 10个经典的Java main方法面试题
- 小米公司JavaScript面试题
- JavaScript面试题大全(推荐)
- 超级全面的PHP面试题整理集合第1/2页
- JS搜狐面试题分析
- 极易被忽视的javascript面试题七问七答
- 10个值得深思的PHP面试题
- 5个实用的shell脚本面试题和答案
- PHP经典面试题集锦