剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。
思路
后序遍历是 左子树 + 右子树 + 根,左子树全小于根,右子树全大于根,dfs判断即可
待填坑:使用栈的方式判断,看了半天没看懂!!
代码
class Solution {
public boolean myVerfify(int l, int r, int[] postorder) {
if (l > r) return true;
int pos = r;
int root = postorder[r];
for (int i = l; i < r; ++i) {
if (postorder[i] > root) {
pos = i;
break;
}
}
for (int i = pos; i < r; ++i) {
if (postorder[i] < root) return false;
}
return myVerfify(l, pos-1, postorder) && myVerfify(pos, r-1, postorder);
}
public boolean verifyPostorder(int[] postorder) {
return myVerfify(0, postorder.length-1, postorder);
}
}
欢迎转载,转载请注明出处!
分类:
剑指offer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现