二叉搜索树的后序遍历序列

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

参考以下这颗二叉搜索树:

示例 1:
输入: [1,6,3,2,5]
输出: false

示例 2:
输入: [1,3,2,6,5]
输出: true

提示:
数组长度 <= 1000

解题思路

如果这题说的是判断该数组是不是某二叉搜索树的中序遍历结果,那么这道题就非常简单了,因为二叉搜索树的中序遍历结果一定是有序的,我们只需要判断数组是否有序就行了。但这道题要判断的是不是某二叉搜索树的后序遍历结果,这样就有点难办了。

二叉搜索树的特点是左子树的值<根节点<右子树的值。而后续遍历的顺序是:左子节点→右子节点→根节点

比如下面这棵二叉树,他的后续遍历是
[3,5,4,10,12,9]

我们知道后续遍历的最后一个数字一定是根节点,所以数组中最后一个数字9就是根节点,我们从前往后找到第一个比9大的数字10,那么10后面的[10,12](除了9)都是9的右子节点,10前面的[3,5,4]都是9的左子节点,后面的需要判断一下,如果有小于9的,说明不是二叉搜索树,直接返回false。然后再以递归的方式判断左右子树。

再来看一个,他的后续遍历是[3,5,13,10,12,9]

我们来根据数组拆分,第一个比9大的后面都是9的右子节点[13,10,12]。然后再拆分这个数组,12是根节点,第一个比12大的后面都是12的右子节点[13,10],但我们看到10是比12小的,他不可能是12的右子节点,所以我们能确定这棵树不是二叉搜索树。搞懂了上面的原理我们再来看下代码。

作者:sdwwld
链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/solution/di-gui-he-zhan-liang-chong-fang-shi-jie-jue-zui-ha/

代码展示

代码如下:

class 

怎样将树的中序遍历的数输入到一个数组中_二叉搜索树的后序遍历序列(剑指offer第三十一天)...相关推荐

  1. 怎样将树的中序遍历的数输入到一个数组中_LeetCode 530.二叉搜索树的最小绝对差

    题目 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值. 提示: + 树中至少有 2 个节点. + 本题与783相同 题目链接 示例 输入:13/2输出: 1 题目分析 ...

  2. 判断给定的整数数组是不是某二叉搜索树的后序遍历的结果

    二叉搜索树: 又:二叉查找树(Binary Search Tree),二叉排序树: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它 ...

  3. 怎样将树的中序遍历的数输入到一个数组中_数据结构与算法-二叉查找树平衡(DSW)...

    上一节探讨了二叉查找树的基本操作,二叉查找树的查找效率在理想状态下是O(lgn),使用该树进行查找总是比链表快得多.但是,该论点并不总是正确,因为查找效率和二叉树的形状息息相关.就像这样: 图1-1给 ...

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

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

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

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

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

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

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

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

  8. 剑指offer(Java实现) 二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 先找到右子树的开始位置,然后分别进行左右 ...

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

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

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

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

最新文章

  1. 对方不想和你说话 php,对方不想和你聊天的表现,遇到后赶紧放弃
  2. 慢系统调用与信号中断
  3. 快捷键截屏_关于Mac电脑截图,你必须要知道的几个快捷键!(错过会后悔哦)...
  4. 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...
  5. .net的label的背景如何设置成为透明_css如何设置背景图片?background属性添加背景图片...
  6. 如何产生cpk图形_PPK与CPK定义,差异分析及计算
  7. sql语言快速入门_C语言快速入门——名称可见性
  8. mysql 360 atlas_360 Atlas中间件安装及使用
  9. java年度总结自我认知,java自我评价
  10. Android---真机调试时不能识别手机的解决方案
  11. [Android6.0] StageFright解码流程小结
  12. ANSYS ICEM CFD非结构体网格生成实例——换热器
  13. 林记seo告诉你seo教程菜鸟seo一个月到底能赚多少钱
  14. 1160. 不容易系列之二
  15. Android 锁屏功能
  16. 杂项多彩_40美丽多彩的博客设计
  17. vivo手机解析包错误解决方式
  18. 如果redis没有设置expire,是否默认永不过期?
  19. python灰产_我用Python一键保存了半佛老师所有的骚气表情包
  20. APE (Monkey's Audio) 音频编码插件for Nero Burning ROM

热门文章

  1. PLSQL 连接不上64位ORACLE数据库解决办法
  2. [linux] 查看目录/文件字节数
  3. C++ string 的学习摘录
  4. Android流媒体
  5. 3、无重复字符的最长子串(python)
  6. 【转】运用jieba库分词
  7. 了解IHttpModule接口事件执行顺便 获取Session
  8. 手把手带你用react hook撸一遍class组件的特性
  9. 【译】GMO Media 使用 HashiCorp Terraform Enterprise 自动配置基础设施
  10. 请认真使用没有后悔药的parted分区工具