声明:本系列博客是对何海涛《剑指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. 二叉搜索树的后序遍历相关推荐

  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之二叉搜索树的后序遍历序列

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

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

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

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

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

最新文章

  1. pandas.read_csv()跳过读取文件报错行
  2. 445port入侵具体解释
  3. 076_浏览器对象模型
  4. 进化吧!我的C++!!
  5. linux在指定目录多个文件中搜索关键字
  6. 如何使用线程完成售票系统
  7. python中的mul函数_Sympy:“Mul”对象没有分层函数的“cos”属性
  8. 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
  9. Linux系统中 安装Vmware Toolst工具
  10. 【CF Contest-1228 E】Another Filling the Grid【容斥】
  11. 像素px与厘米怎么换算
  12. cad二次开发c#学习记录2——画一条线
  13. 图片加载防闪动的CSS方法
  14. 跳跳棋【LCA】【二分】
  15. Android color.xml设置透明度
  16. 一文学会查看OSPFv3 LSDB
  17. AI 机器学习实践总结
  18. win xp出现“安装程序包的语言不受支持”的解决
  19. 原生JS实现轮播图 方法总结
  20. (写着玩)Python仿网络游戏《炉石传说》,继上次部分代码展示

热门文章

  1. python文件打包成可执行文件pyinstaller -F ***.pt
  2. 漫画:什么是 “千年虫” 问题?
  3. 很全信息学赛事汇总来啦,快看你能参加哪些比赛?
  4. 教你用Python获取qq好友备注名称
  5. 怎样从别人的原理图中提取原理图库文件(part)?
  6. Java的假克隆和真克隆(1)
  7. 到底谁牛 Linux邮件服务器软件比较
  8. [codeforces815D] Karen and Cards
  9. 【经济学视频课程】需求定律四个准…
  10. 美国教授如何判别申请的学生是否有潜力(Johnny翻译)