当前位置: 首页 > news >正文

【LeetCode|数据结构】剑指 Offer 33. 二叉搜索树的后序遍历序列

题目链接

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

标签

二叉搜索树、后序遍历

步骤

  1. 二叉搜索树的左子树的节点值 ≤ \le 根节点值 ≤ \le 右子树的节点值;
  2. 对于后序遍历序列最后一个元素的值为根节点的值;

由上面的两个性质可以得出,对于给定的后序序列 arr

Step1. 根据 arr 的最后一个元素,将其之前的序列进行划分(左子树、右子树);如果存在不能划分的情况,返回 false

int flag = arr[r];
int mark = -1; // first elem > flag
for (int i = l; i < r; i++) { // check from idx:l to r-1if (arr[i] > flag) {mark = i;break;}
}
if (mark != -1) {for (int i = mark; i < r; i++) {if (arr[i] < flag) {return false;}}
} else {mark = l + 1;
}

Step2. 递归判断左右子区间,直至当前区间不能再被划分。

bool judge(vector<int> &arr, int l, int r) {if (l >= r) {return true;}/*****balabala*****/return judge(arr, l, mark-1) && judge(arr, mark, r-1);
}

完整代码(C++)

class Solution {
public:bool judge(vector<int> &arr, int l, int r) {if (l >= r) {return true;}// l <= r// step1. partitionint flag = arr[r];int mark = -1; // first elem gt flagfor (int i = l; i < r; i++) { // check from idx:l to r-1if (arr[i] > flag) {mark = i;break;}}if (mark != -1) {for (int i = mark; i < r; i++) {if (arr[i] < flag) {return false;}}} else {mark = l + 1;}return judge(arr, l, mark-1) && judge(arr, mark, r-1);}bool verifyPostorder(vector<int>& postorder) {return judge(postorder, 0, postorder.size()-1);        }
};
http://www.lryc.cn/news/132500.html

相关文章:

  • 自定义协程
  • 【Atcoder】 [ABC240Ex] Sequence of Substrings
  • 真机二阶段之堆叠技术
  • 简单、快速、无需注册的在线 MockJs 工具
  • 【Linux取经路】探索进程状态之僵尸进程 | 孤儿进程
  • 第十二章MyBatis动态SQL
  • redis--发布订阅
  • 链表2-两两交换链表中的节点删除链表的倒数第N个节点链表相交环形链表II
  • 数据结构之并查集
  • [element-ui] el-date-picker a-range-picker type=“daterange“ rules 校验
  • Dockers搭建个人网盘、私有仓库,Dockerfile制作Nginx、Lamp镜像
  • 2023 CCPC 华为云计算挑战赛 hdu7401 流量监控(树形dp)
  • 01.Django入门
  • 亿赛通电子文档安全管理系统任意文件上传漏洞(2023-HW)
  • docker限制容器日志大小
  • 底层驱动实现数码管显示温湿度数值功能
  • 03架构管理之测试管理
  • 30、devtools 依赖关于自动重启(自动加载页面)的知识
  • ES6 Promise/Async/Await使用
  • Word中对象方法(Methods)的理解及示例(上)
  • AutoDev 1.1.3 登场,个性化 AI 辅助:私有化大模型、自主设计 prompt、定义独特规则...
  • win11 python 调用edge调试过程
  • DS-排序回顾
  • clion软件ide的安装和环境配置@ubuntu
  • Cpp学习——类与对象3
  • 回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(四)
  • FOSSASIA Summit 2023 - 开源亚洲行
  • QT 基本对话框
  • ​8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.