博客
关于我
微软高频面试模拟题 剑指 Offer 33. 二叉搜索树的后序遍历序列
阅读量:232 次
发布时间:2019-03-01

本文共 972 字,大约阅读时间需要 3 分钟。

验证后序遍历序列是否为二叉搜索树

二叉搜索树的后序遍历序列验证方法

在二叉搜索树的后序遍历中,根节点总是最后一个访问的节点。通过这一特性,我们可以高效地验证给定的后序遍历序列是否构成二叉搜索树。

验证步骤如下

  • 找到序列的最后一个元素作为根节点

  • 确定根节点的左子节点和右子节点的范围

  • 根据二叉搜索树的性质,左子节点的值应小于根节点的值,右子节点的值应大于根节点的值

  • 递归地对左右子节点分别进行验证

  • 如何判断序列不是二叉搜索树

    如果在验证过程中发现某个节点的右子节点的值小于或等于根节点的值,或者左子节点的值大于或等于根节点的值,那么这个序列就不是二叉搜索树。

    代码实现

    class Solution {public:    bool verifyPostorder(vector
    & postorder) { return dfs(postorder, 0, postorder.size() - 1); } bool dfs(vector
    & postorder, int left, int right) { if (left >= right) return true; int val = postorder[right]; int k = left; while (k < right && postorder[k] <= val) { k++; } if (k == left) return false; int root = right; right = k - 1; if (root == -1) return true; return dfs(postorder, left, root) && dfs(postorder, root + 1, right); }}

    该代码使用递归的方式验证后序遍历序列是否为二叉搜索树。首先找到根节点,然后确定左子节点和右子节点的范围,最后递归验证左右子树是否满足二叉搜索树的性质。

    通过这种方法可以有效地判断给定的后序遍历序列是否构成二叉搜索树。

    转载地址:http://sjqv.baihongyu.com/

    你可能感兴趣的文章
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>
    Python 八大排序算法合集
    查看>>
    python 关于epoll的学习
    查看>>
    Python 内存管理
    查看>>
    Python 内嵌函数:它们有什么用处?
    查看>>