剑指offer---2、二叉搜索树的后序遍历序列

一、总结

一句话总结:

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
认真看题:注意题目中是二叉搜索树,二叉搜索树就有二叉搜索树的那些规律

1、二叉搜索树的后序遍历序列 的解题思路是什么?

BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。完美的递归定义 : ) 。

2、二叉树的问题的注意事项是什么?

递归:一般是 递归 来做
增一个函数:一般要重新写一个函数来做递归

二、内容在总结中

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

参考代码:java

class Solution {
bool judge(vector<int>& a, int l, int r){
//只有一个元素的时候
if(l >= r) return true;
//找右子树
int i = r;
while(i > l && a[i - 1] > a[r]) --i;
//判断左子树
for(int j = i - 1; j >= l; --j) if(a[j] > a[r]) return false;
//分别判断左右子树
return judge(a, l, i - 1) && (judge(a, i, r - 1));
}
public:
bool VerifySquenceOfBST(vector<int> a) {
if(!a.size()) return false;
return judge(a, 0, a.size() - 1);
}
};
 

最新文章

  1. DB String Split sample
  2. Backpack | &amp; ||
  3. hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
  4. 指针属性直接赋值 最好先retain 否则内存释放导致crash
  5. GPRS Sniffing Tutorial
  6. CentOS7 备忘录
  7. android 带边框的圆角按钮
  8. KMP学习笔记
  9. [LeetCode] 347. Top K Frequent Elements 解题思路 - Java
  10. getpwent()
  11. apache的配置参数
  12. Docker Hub工作流程-Docker for Web Developers(6)
  13. odoo 权限问题
  14. 22 python 初学(类,面向对象)
  15. [04-05]box框模型(Box Model)定义了元素框处理元素内容、内边距、边框和外边距的方式
  16. AI大道理头尾标识
  17. 自定义控件(视图)2期笔记12:View的滑动冲突之 外部拦截法
  18. ubuntu 卸载 google-chrome
  19. BZOJ1096 ZJOI2007 仓库建设 【斜率优化DP】
  20. IDEA下载与安装

热门文章

  1. 饿了么 &lt;el-input&gt;&lt;/el-input&gt;输入框获取与失去焦点事件
  2. C# 语法特性
  3. context和getApplicationContext()的区别
  4. hive内部表&amp;外部表介绍
  5. java 京东登录
  6. PHP面试 MySQL查询优化
  7. 微信小程序 Page构造函数重写
  8. log4j日志记录到数据库
  9. 利用HTML制作一个简单的界面(工具HBuilder)
  10. Spring入门,使用Maven进行管理