剑指offer之二叉搜索树的后序遍历序列

欢迎关注作者博客
简书传送门

题目

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

二叉树三种遍历方式

  1. 先序遍历
    先序遍历先从二叉树的根开始,然后到左子树,再到右子树
  2. 中序遍历
    中序遍历先从左子树开始,然后到根,再到右子树
  3. 后序遍历
    后序遍历先从左子树开始,然后到右子树,再到根

思路

二叉搜索树的特点是左子树比根结点小,右子树比根结点大。后序遍历最后一个元素是根结点,根结点左边的元素都比根结点小,根结点右边的元素都比根结点大。

/*** @program:* @description:* @author: zhouzhixiang* @create: 2018-11-14 18:41*/
public class Test23 {public static boolean verifySequenceOfBST(int[] sequence) {if(sequence == null || sequence.length <= 0) return false;return verifySequenceOfBST(sequence, 0, sequence.length - 1);}/*** 后序遍历,先左子树,然后根节点,然后右子树* @param sequence* @param start* @param end* @return*/private static boolean verifySequenceOfBST(int[] sequence, int start, int end) {// 要处理的数据只有一个,或者没有要处理的数据了if(start >= end) return true;// 从左向右找第一个大于根节点的元素的位置int index = start;while (index < end - 1 && sequence[index] < sequence[end]) index++;// 执行到此处[start, index-1]的元素都是小于根节点的// right用来记录第一个不小于根节点的元素的位置int right = index;while (index < end - 1 && sequence[index] > sequence[end]) index++;// 如果index不等于end-1,说明右子树数据中有不大于根节点的数据,不成立if(index != end - 1) return false;// 执行到此,目前数据还是合法的index = right;return verifySequenceOfBST(sequence, start, index - 1) && verifySequenceOfBST(sequence, index, end - 1);}
}

欢迎加入Java猿社区

剑指offer之二叉搜索树的后序遍历序列相关推荐

  1. 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

    [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...

  2. 剑指 Offer 33. 二叉搜索树的后序遍历序列

    剑指 Offer 33. 二叉搜索树的后序遍历序列 原始题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian- ...

  3. 【超100%解法】剑指 Offer 33. 二叉搜索树的后序遍历序列

    立志用最少的代码做最高效的表达 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 示例 1: 输入: ...

  4. 二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...

    本题主要在于考察对二叉搜索树和后序遍历的理解. 原题 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同 ...

  5. 【分治】剑指 Offer 33. 二叉搜索树的后序遍历序列

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

  6. 2021-08-24剑指 Offer 33. 二叉搜索树的后序遍历序列

    将二叉树划分为左右子树,分别对左右子树进行验证是否为二叉树, 根节点的下标为i, 右子树的开端为第一个大于根节点的数字m, 则左边的子树为[0,m-1],右边的子树的下标为[m,i-1] (这个不对, ...

  7. 剑指offer 33. 二叉搜索树的后序遍历

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果,如果是返回true,否则返回false.假设输入的数 ...

  8. 一刷328-递归recur-剑指 Offer 33. 二叉搜索树的后序遍历序列(m)

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

  9. 剑指笔记——33.二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No. 假设输入的数组的任意两个数字都互不相同. 思路:在这个题中要注意是二叉搜索树,二叉搜索树满足左 ...

最新文章

  1. 最大整数扩展欧几里得
  2. 研究人员开发出最节能的 Wi-Fi 技术
  3. SD-WAN的体系结构是如何提高网络灵活性和效率?
  4. oracle返回表id,在Oracle的函数中,返回表类型的语句
  5. iphone退款申请教程_【揭秘】朋友圈卖的iOS退款、王者荣耀0元撸点券教程
  6. 壁纸图片|2020年12月游戏图片大全
  7. 5个相见恨晚的Linux命令
  8. 当红“元宇宙”需要冷思考,听听科幻作家、清华教授和阿里专家怎么说
  9. Java在线问卷调查系统的分析与实现管理员功能模块
  10. 天翼网关未欠费有信号且不能上网解决办法
  11. keil软件是干嘛的?keil软件怎么用?
  12. 网络工程师考试经验总结
  13. osgearth加载倾斜摄影数据
  14. 阅读记录-统计你的每一次读书和笔‪记
  15. 用python完成选股策略a股_Python 金融: 0亏损选股策略
  16. MATLAB-mesh/ezmesh函数三维图形绘制
  17. unlikely 与 likely的作用
  18. win7安装MySQL5.6.17
  19. qt Android之环境建立
  20. 方舟编译器学习笔记分类与导读

热门文章

  1. Linux下安装Git、git命令介绍
  2. 拜读台湾清华大学彭明辉教授研究生手册笔记
  3. java 生成正弦波声音_Java错误生成声音正弦波
  4. k8s之ReplicaSet
  5. C语言中怎么表示派 -π
  6. 大南湖地磅房升级需要改造哪些方面
  7. matlab实现kuan滤波,用Matlab设计一个0.5-20HZ的带通滤波器! - 程序语言 - 小木虫 - 学术 科研 互动社区...
  8. matlab emi滤波器设计,EMI滤波器设计.pdf
  9. What comes after microservice?
  10. AlphaGo挑战围棋九段高手李世石