假设二叉搜索树长这样,他的异端前序遍历应该是

[5,6,2,3,1]

现在如果给出一个这样的数组,如何重建这课二叉搜索树?

首先

5

\

6

然后来了2, 递增栈会一直递增, 6,5

这时候6,5全部被弹出,压入2, 2的父亲是上一个被弹出的5

5

/         \

2             6

然后来了

5

/         \

2             6

\

3

最后是1,

5

/             \

2                6

/       \

1          3

所以,根据异端先根遍历可以得到一颗二叉搜索树

只要保证左子树比根节点小就行了

AC代码

class Solution {
public:bool verifyPostorder(vector<int>& postorder) {stack<int> stk;int len = postorder.size();int peek = INT_MAX;for (int i = len - 1; i >= 0; i--){int num = postorder[i];if (num > peek) return false;while (!stk.empty() && num < stk.top()){peek = stk.top();stk.pop();}stk.push(num);}return true;}
};

结果

利用单调栈判断二叉搜索树的后序遍历序列相关推荐

  1. 剑指offer:面试题33. 二叉搜索树的后序遍历序列

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

  2. [剑指offer] 二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...

  3. 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

    剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...

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

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

  5. 剑指offer——二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 这里遇到的问题就是,传递的子数组怎 ...

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

    剑指offer--面试题24:二叉搜索树的后序遍历序列 Solution1: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二 ...

  7. 剑指offer之二叉搜索树的后序遍历序列

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

  8. 剑指 Offer 33. 二叉搜索树的后序遍历序列

    剑指 Offer 33. 二叉搜索树的后序遍历序列 原始题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian- ...

  9. 23.二叉搜索树的后序遍历序列

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

最新文章

  1. 零基础入门学习Python(31)-异常处理2-try语句
  2. ps修改dds贴图_「干货」喜爱3D游戏动漫建模的你,必备的次世代游戏贴图技巧...
  3. CSS结构的基础认知
  4. python-函数的注释
  5. python鼠标右键检测按钮_如何检测右键单击+左键单击
  6. 【飞控理论】从零开始学习Kalman Filters之一:Kalman Filters的常见用途、什么是状态观测器?
  7. 福建工程学院寒假作业第一周G题
  8. Linux操作Oracle(7)—连接Oracle12C 或 OracleRac 出现 ORA-28040: No matching authentication protocol,没有匹配的验证协议
  9. c#的chart标题_c#关于chart控件的使用方法
  10. 【STM32】标准库 菜鸟入门教程(1)初识最小系统
  11. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理?
  12. 【Android安全】Android root原理及方案 | Magisk原理
  13. 网站使用国外服务器越来越卡、越来越慢的原因
  14. Js验证身份证是否正确
  15. QPushButton禁用状态文字变形变粗
  16. 猛犸Winform分页控件
  17. Unity游戏开发:文字冒险游戏项目实战
  18. 汤臣倍健创业25周年,宣布公司未来3年四个战略重点
  19. (附源码)计算机毕业设计SSM幼儿园管理系统
  20. IEC61850笔记--IEC61850应用入门(一)

热门文章

  1. Screen OS 6.0 学习笔记一
  2. 关键词与关键词之间的相关度计算
  3. 分布式锁的几种实现方式
  4. javascript正则表达式小结
  5. 方法对象java final关键字的用法
  6. Math.ceil(),Math.floor()与Math.round()三个函数的定义。
  7. 【转载】[Windows 8]Hello Windows 8 - Windows 8 Developer Preview搶先預覽
  8. Linux内核源代码分析-第三章 内核体系结构概述-1
  9. Regex入门(一)
  10. 利用Vlan控制与隔离广播风暴