剑指offer-面试题24-二叉搜索树的后序遍历序列
来源:互联网 发布:旅游大数据分析方案 编辑:程序博客网 时间:2024/06/05 10:05
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回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; }
0 0
- [剑指offer][面试题24]二叉搜索树的后序遍历序列
- 【剑指offer】面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现
- 【剑指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:二叉搜索树的后序遍历序列
- Bash基本功能
- 深度剖析类加载器系列文章:一、Java类的加载、链接、初始化
- PHP生成随机姓名的类
- Java多线程
- 周志华-机器学习-第二章
- 剑指offer-面试题24-二叉搜索树的后序遍历序列
- Android插件化总结
- get bash shell with python fabric
- JAVA后台集成支付宝的注意事项,持续更新
- opencv_traincascade的参数解释——(LBP+cascade)行人检测
- 原生JS--解读Element
- angular 实时更新模板视图的方法$apply
- Windows下整合Apache2.2和Tomcat6.0 集群与负载均衡
- 内存、并发什么的