二叉搜索树的后续遍历序列:既然是二叉搜索树,那么就满足左子树结点都大于或者小于根节点右子树都小于或大于根结点

根据搜索树的这种特点,将给定的树划分为左子树或者右子树,递归的处理左右子树

public class _Q24 {public boolean VerifySeqOfBST(int seq[]){if(seq == null ) return false;if(seq.length == 1 || seq.length == 0) return true;boolean result = true;int index = 0;// 以index来区分左右子树 - index左边是左子树,以index开始至根结点是右子树for (int i = 0; i < seq.length; i++) {// 题目申明是没有重复元素的,那么第一个大于根结点值的就是右子树中的第一个结点if (seq[i] > seq[seq.length - 1]) { index = i;break;}}// 判断右子树是否满足关系-右子树必须都大于根结点for(int i=index; i<(seq.length-1); i++){if(seq[i] < seq[seq.length - 1]){result = false;break;}}// 递归的判断左子树if(result == true){result = VerifySeqOfBST(Arrays.copyOfRange(seq, 0, index));}// 递归的判断右子树if(result == true){result = VerifySeqOfBST(Arrays.copyOfRange(seq, index, seq.length-1));}return result;}}

测试代码:

public class _Q24Test extends TestCase {_Q24 verifyTree = new _Q24();public void test(){int seq1[] = {5, 7, 6, 9, 11, 10, 8};int seq2[] = {7, 4, 6, 5};int seq3[] = {5};int seq4[] = {};int seq5[] = null;System.out.println(verifyTree.VerifySeqOfBST(seq1));System.out.println(verifyTree.VerifySeqOfBST(seq2));System.out.println(verifyTree.VerifySeqOfBST(seq3));System.out.println(verifyTree.VerifySeqOfBST(seq4));System.out.println(verifyTree.VerifySeqOfBST(seq5));}}

【剑指offer-Java版】24二叉搜索树后序遍历序列相关推荐

  1. 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

    剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...

  2. 剑指offer(C++)-JZ33:二叉搜索树的后序遍历序列(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回 tru ...

  3. 剑指offer(23)二叉搜索树的后序遍历序列

    前提:二叉搜索树的后续遍历由{左子数.右子树.根}组成,根的值小于右子树,大于左子树. 思路就是:后续遍历sequence,通过与根节点比较,找到左子树与右子树的分界点(i):如果如果分界点前面的数有 ...

  4. 【剑指Offer】23、二叉搜索树的后序遍历序列

      题目描述:   输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   解题思路:   对于后续遍历序列,序 ...

  5. 《剑指Offer》36:二叉搜索树与双向链表

    题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向.比如,输入下图中的二叉搜索树,输出转换之后的排序双向链表. 二叉树节点的定义如下 ...

  6. 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)

    1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...

  7. 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)

    1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...

  8. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)

    1. 题目 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 13/ \1 4\2 输出: 4示例 2: 输入: root = [ ...

  9. 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...

最新文章

  1. mysql主键始终从小到大_Mysql从入门到入神之(四)B+树索引
  2. Spring Boot 添加拦截器的配置方式
  3. vmware服务器虚拟化部署sdn,使用VMware的NSX多面落地软件定义网络SDN视频课程
  4. pyecharts本地文件_python数据可视化-pyecharts插件使用文档
  5. swift学习笔记之一——初见swift
  6. IOS开发之视图和视图控制器
  7. 数据分析和数据挖掘相关模块
  8. 机器学习算法-09-深度学习、BP神经网络、Hopfield神经网络、基于数学原理的神经网络、径向基函数RBF(B站一条会说666的咸鱼)
  9. mysql基础之查询缓存、存储引擎
  10. 光学定位与追踪技术_从显微镜到显纳镜:小于2nm定位精度光学显微镜
  11. Linux下SVN客户端基本使用教程
  12. Qt之QPA(linuxfb 一)
  13. 解决微信、QQ在一加手机系统中无法限制后台的问题
  14. Waves 10 win10 如何卸载干净 / 安装 / 如何处理waves mixer application installation failed / 改变默认安装路径
  15. 使用Html/Css简单创建一个菜单
  16. 初识CornerNet
  17. 要点初见:双硬盘下的Win10+Ubuntu16.04双系统安装
  18. PointNet学习笔记(一)—— 论文
  19. 圆的周长,面积,球的体积和表面积
  20. javaweb JAVA JSP校园二手交易平台源码jsp二手交易系统 闲置物品出售

热门文章

  1. mybatis 如何判断重复插入_MyBatis常见面试题3:数据库插入重复如何处理
  2. 不少朋友在安装IDES 4.71的过程中都遇到了下面的出错提示:
  3. SQLServer执行命令出现“目录无效的提示”
  4. 关于Oracle数据库用户密码过期的预防和解决办法
  5. 用到lucene的爬虫的简单实现
  6. gcc的安装----rpm包安装顺序
  7. 【Quartz】Quartz
  8. ActiviteX 服务
  9. Deploying Windows Mobile 6 with Exchange Server 2007 白皮书
  10. Nginx处理请求的11个阶段