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

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

题目描述

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

参考以下这颗二叉搜索树:

     5/ \2   6/ \1

示例 1:
输入: [1,6,3,2,5]
输出: false

示例 2:
输入: [1,3,2,6,5]
输出: true

提示:
数组长度 <= 1000

解题思路
  • 二叉搜索树特点:若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树上所有节点的值均大于它的根节点的值。
  • 后序遍历序列的最后一个值为二叉树的根节点,前面分为两部分,前半部分都小于根节点的值,后半部分都大于根节点的值。
  • 假设后序遍历序列长度为len,最后一个值为root,找出序列中第一个大于root的值的位置i,那么[0,i)为它的左子树,[i,len)为它的右子树。
实现代码
class Solution {
public:bool verifyPostorder(vector<int>& postorder) {int len = postorder.size();if(len==0)return true;int root = postorder[len-1];//根节点的值vector<int> left;vector<int> right;int temp=0;for(int i=0;i<len-1;i++){//得到左子树序列temp=i;//保存第一个大于root值的位置if(postorder[i]<root)left.push_back(postorder[i]);//左子树else//找到了第一个大于root的值,temp保存了它的位置                break;                        }if(temp==len-2)//说明左边的值都小于root,没有右子树temp=temp+1;for(int i=temp;i<len-1;i++){//得到右子树序列if(postorder[i]<root)//如果[temp,len-1)中有小于root值得,返回flasereturn false;right.push_back(postorder[i]);//右子树}if(verifyPostorder(left)&verifyPostorder(right))//递归,判断左子树和右子树是否都符合二叉搜索树条件return true;return false;}
};

[剑指offer]二叉搜索树的后序遍历数列相关推荐

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

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

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

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

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

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

  4. 剑指offer 二叉搜索树的后序遍历

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

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

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

  6. 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

    [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 文章目录 [LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列 package offer;public cl ...

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

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

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

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

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

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

最新文章

  1. 在Centos8 中使用Stratis管理本地存储(一)
  2. servlet Context (在servlet 中设定context)
  3. yarn架构——本质上是在做解耦 将资源分配和应用程序状态监控两个功能职责分离为RM和AM...
  4. pytorch笔记 pytorch模型中的parameter与buffer
  5. canny算法的实现(android加载图片,数组写入文件换行)
  6. 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode编译到Android...
  7. iphone同步助手_如何将 iPhone 或 iCloud 的照片和视频备份到电脑?
  8. 深入理解CPU cache:组织、一致性(同步)、编程
  9. Go语言的异常处理之errors,panic, recover
  10. 您尝试安装的Adobe Flash Player版本不是最新版本解决办法
  11. TeXLive2021+TeXStudio安装及配置,亲测有效!
  12. 女孩子取什么名字好听又独特?自己家的宝宝就要个好名字
  13. python pipe_Python os.pipe()用法及代码示例
  14. Outlook打不开附件
  15. 获取当年的法定节假日和周末_通过可配置的周末和节假日添加工作日
  16. 【01:转自知乎:关于 openSUSE 】
  17. 偷偷爆料下 955 不加班公司名单(2023 年最新版!)
  18. mysql mmm集群简介_mysql之MMM高可用方案简介
  19. 一步步蚕食的意思_第800章 一步步蚕食
  20. socket.io前后端实践及转发、多服务问题

热门文章

  1. 2019 此去经年,才无尽,计未成,世如星辰
  2. 【计算机毕业设计】论坛管理系统
  3. 数据库中DDL、DQL、DML、DCL、TCL都是什么意思
  4. 关于增加总决赛(线下)多车编队组二等奖名额的申请
  5. 人工智能数学基础——核函数和激活函数
  6. C语言 return 0 和return 1有什么区别
  7. 工程造价中间的小问题和大影响
  8. Jackson中JsonNode的取值asText()和textValue()区别
  9. 腾讯上线零钱通,这将是腾讯和阿里的新战场
  10. 计组——定点数原码反码补码移码以及它们之间的转换