题目描述

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

解题思路

先找到右子树的开始位置,然后分别进行左右子树递归处理。

(1)寻找右子树的开始位置

​ 在二叉搜索树的后序遍历结果中,最后一个元素为这棵树的根节点;因此,将最后一个元素作为比较的标准值,将结果数组分为两段,若后序遍历结果正确,则比最后一个元素小的那一段连续数组则为该树的左子树,而比最后一个元素大的那一段连续数组则为该树的右子树。

​ 因此,我们可以得到右子树的开始位置,即出现的第一个比 最后一个元素 大的元素的位置。

(2)后半段数组的校验

​ 如果后半段数组中,有出现比 最后一个元素 大的元素,则该结果不是二叉搜索树的后序遍历结果,返回为 false。

(2)递归处理

​ 递归处理,直到没有出现 false,最终走到底,返回 true。

代码实现

import java.util.Arrays;public class Solution {public boolean VerifySquenceOfBST(int [] sequence) {if (null == sequence || 0 == sequence.length) {return false;}int restart = 0;int length = sequence.length;for (int i = 0; i < length - 1; i++) {if (sequence[i] < sequence[length - 1]) {restart++;}}if (0 == restart) {VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, length - 1));} else {for (int i = restart; i < length - 1; i++) {if (sequence[i] <= sequence[length - 1]) {return false;}}VerifySquenceOfBST(Arrays.copyOfRange(sequence, 0, restart));VerifySquenceOfBST(Arrays.copyOfRange(sequence, restart, length - 1));}return true;}
}

剑指offer(Java实现) 二叉搜索树的后序遍历序列相关推荐

  1. 剑指offer 24:二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 二叉搜索数的定义:左节点比根节点小,右节 ...

  2. 剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)

    题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 输入: 每个测试案例包括2行: 第一行为1个整数 ...

  3. 【剑指offer】_09二叉搜索树的后序遍历序列

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

  4. 剑指offer面试题[24]-二插搜索树的后序遍历序列

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

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

    剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...

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

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

  7. C#刷剑指Offer | 二叉搜索树的后序遍历序列

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第289篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

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

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

  9. 剑指offer——面试题24:二叉搜索树的后序遍历序列

    剑指offer--面试题24:二叉搜索树的后序遍历序列 Solution1: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二 ...

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

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

最新文章

  1. 【Groovy】集合遍历 ( 使用集合的 find 方法查找集合元素 | 闭包中使用 == 作为查找匹配条件 | 闭包中使用 is 作为查找匹配条件 | 闭包使用 true 作为条件 | 代码示例 )
  2. archer mysql源码_自动化运维工具inception+archer
  3. React ref的转发
  4. 低代码发展系列专访之五:低代码的最大价值点是“技术平民化”吗?
  5. 一个O-RAN YANG语言文件:o-ran-interfaces.yang
  6. 小宝机器人怎么开机_是我低估了网友的脑洞 扫地机器人充电“事故现场”
  7. 阶梯博弈(尼姆博奕进阶)
  8. SpringMVC学习笔记(1)-SpringMVC介绍
  9. 合并两个有序数组js
  10. python超市管理系统实训报告_需求分析实验报告(小型超市管理系统)
  11. BT.601和BT.656
  12. 2021年人口普查结果分析
  13. 调整视频播放速度,如何让视频加速或放慢播放
  14. 【概率论与数理统计】python实验
  15. date命令显示格式化的年月日时分秒
  16. 37%,最佳停止观望点
  17. Photoshop CS 中的“照片滤镜/Photo Filter”命令详解(转)
  18. java编码转换 解决日文乱码
  19. Python正规兼职渠道有哪些?副业月入8000+
  20. QT编译liblzma

热门文章

  1. 图书查找java_java第三季第一章:查找图书信息实现
  2. 利用mysql做信息管理_利用MySql实现学生信息管理系统的后台数据管理
  3. java 内存泄露对象排查_记录一次 java内存泄漏的排查
  4. linux运行shellftp上传文件,shell脚本实现ftp上传下载文件
  5. dataimagepng php_php用header('content-type: image/png')输出验证码,但响应回来的是text/html...
  6. linux配置apache文件大小,linux下apache中httpd.conf文件配置参数说明
  7. PATA1001A+BFormat
  8. linux上的web spider开发
  9. python设计模式-观察者
  10. “RPC好,还是RESTful好?”