剑指offer之二叉搜索树的后序遍历序列
剑指offer之二叉搜索树的后序遍历序列
欢迎关注作者博客
简书传送门
题目
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
二叉树三种遍历方式
- 先序遍历
先序遍历先从二叉树的根开始,然后到左子树,再到右子树 - 中序遍历
中序遍历先从左子树开始,然后到根,再到右子树 - 后序遍历
后序遍历先从左子树开始,然后到右子树,再到根
思路
二叉搜索树的特点是左子树比根结点小,右子树比根结点大。后序遍历最后一个元素是根结点,根结点左边的元素都比根结点小,根结点右边的元素都比根结点大。
/*** @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之二叉搜索树的后序遍历序列相关推荐
- 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列
[LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列 原始题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian- ...
- 【超100%解法】剑指 Offer 33. 二叉搜索树的后序遍历序列
立志用最少的代码做最高效的表达 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 示例 1: 输入: ...
- 二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...
本题主要在于考察对二叉搜索树和后序遍历的理解. 原题 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同 ...
- 【分治】剑指 Offer 33. 二叉搜索树的后序遍历序列
题目描述 (中等)输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树: 5/ ...
- 2021-08-24剑指 Offer 33. 二叉搜索树的后序遍历序列
将二叉树划分为左右子树,分别对左右子树进行验证是否为二叉树, 根节点的下标为i, 右子树的开端为第一个大于根节点的数字m, 则左边的子树为[0,m-1],右边的子树的下标为[m,i-1] (这个不对, ...
- 剑指offer 33. 二叉搜索树的后序遍历
声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果,如果是返回true,否则返回false.假设输入的数 ...
- 一刷328-递归recur-剑指 Offer 33. 二叉搜索树的后序遍历序列(m)
题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false. 假设输入的数组的任意两个数字都互不相同. ----------- 示例:参考以下这 ...
- 剑指笔记——33.二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No. 假设输入的数组的任意两个数字都互不相同. 思路:在这个题中要注意是二叉搜索树,二叉搜索树满足左 ...
最新文章
- 最大整数扩展欧几里得
- 研究人员开发出最节能的 Wi-Fi 技术
- SD-WAN的体系结构是如何提高网络灵活性和效率?
- oracle返回表id,在Oracle的函数中,返回表类型的语句
- iphone退款申请教程_【揭秘】朋友圈卖的iOS退款、王者荣耀0元撸点券教程
- 壁纸图片|2020年12月游戏图片大全
- 5个相见恨晚的Linux命令
- 当红“元宇宙”需要冷思考,听听科幻作家、清华教授和阿里专家怎么说
- Java在线问卷调查系统的分析与实现管理员功能模块
- 天翼网关未欠费有信号且不能上网解决办法
- keil软件是干嘛的?keil软件怎么用?
- 网络工程师考试经验总结
- osgearth加载倾斜摄影数据
- 阅读记录-统计你的每一次读书和笔记
- 用python完成选股策略a股_Python 金融: 0亏损选股策略
- MATLAB-mesh/ezmesh函数三维图形绘制
- unlikely 与 likely的作用
- win7安装MySQL5.6.17
- qt Android之环境建立
- 方舟编译器学习笔记分类与导读
热门文章
- Linux下安装Git、git命令介绍
- 拜读台湾清华大学彭明辉教授研究生手册笔记
- java 生成正弦波声音_Java错误生成声音正弦波
- k8s之ReplicaSet
- C语言中怎么表示派 -π
- 大南湖地磅房升级需要改造哪些方面
- matlab实现kuan滤波,用Matlab设计一个0.5-20HZ的带通滤波器! - 程序语言 - 小木虫 - 学术 科研 互动社区...
- matlab emi滤波器设计,EMI滤波器设计.pdf
- What comes after microservice?
- AlphaGo挑战围棋九段高手李世石