剑指offer 33. 二叉搜索树的后序遍历
声明:本系列博客是对何海涛《剑指offer》的关键点总结。
1.问题描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果,如果是返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如:输入数组{ 5 7 6 9 11 10 8}是下图的后序遍历。
2. 解决思路
1)后序遍历的最后一个数字肯定是根结点。
2)在BST中,左子树上的所有结点的值都小于根结点的值;
3)在BST中,右子树上的所有结点的值都大于根结点的值;
4)利用特点2)和3)可以把根结点左边的数组分为两部分,递归调用函数分别判断他们是不是左、右子树;
3. 代码实现
class Solution {
public:bool VerifySquenceOfBST(vector<int> vec) {int len = vec.size() - 1;return VerifySquenceOfBST2(vec,0,len); }bool VerifySquenceOfBST2(vector<int> &vec, int l, int r) {if(vec.empty() || (l > r)) return false;int root = vec[r];//左子树所有结点小于根结点int i = l;for(; i < r; ++i){if(vec[i] > root) break;}//右子树所有结点大于根结点int j = i;for(; j < r;++j){if(vec[j] < root) return false;}//判断左子树是不是bool left = true;if(i > l)left = VerifySquenceOfBST2(vec, l, i-1); //判断右子树是不是bool right = true;if(i < r)left = VerifySquenceOfBST2(vec, i, r-1); return (left && right); }
};
剑指offer 33. 二叉搜索树的后序遍历相关推荐
- 【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之二叉搜索树的后序遍历序列
剑指offer之二叉搜索树的后序遍历序列 欢迎关注作者博客 简书传送门 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个 ...
- 一刷328-递归recur-剑指 Offer 33. 二叉搜索树的后序遍历序列(m)
题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false. 假设输入的数组的任意两个数字都互不相同. ----------- 示例:参考以下这 ...
- 剑指笔记——33.二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No. 假设输入的数组的任意两个数字都互不相同. 思路:在这个题中要注意是二叉搜索树,二叉搜索树满足左 ...
最新文章
- pandas.read_csv()跳过读取文件报错行
- 445port入侵具体解释
- 076_浏览器对象模型
- 进化吧!我的C++!!
- linux在指定目录多个文件中搜索关键字
- 如何使用线程完成售票系统
- python中的mul函数_Sympy:“Mul”对象没有分层函数的“cos”属性
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
- Linux系统中 安装Vmware Toolst工具
- 【CF Contest-1228 E】Another Filling the Grid【容斥】
- 像素px与厘米怎么换算
- cad二次开发c#学习记录2——画一条线
- 图片加载防闪动的CSS方法
- 跳跳棋【LCA】【二分】
- Android color.xml设置透明度
- 一文学会查看OSPFv3 LSDB
- AI 机器学习实践总结
- win xp出现“安装程序包的语言不受支持”的解决
- 原生JS实现轮播图 方法总结
- (写着玩)Python仿网络游戏《炉石传说》,继上次部分代码展示