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

Leetcode会员尊享面试100题:255.验证二叉搜索树的前序遍历序列

给定一个无重复元素的整数数组preorder如果它是以二叉搜索树的先序遍历排列,返回true

示例 1:

输入:preorder = [5,2,1,3,6]输出:true

示例 2:

输入:preorder = [5,2,6,1,3]输出:false

提示:

  • 1 <= preorder.length <= 104
  • 1 <= preorder[i] <= 104
  • preorder无重复元素

进阶:您能否使用恒定的空间复杂度来完成此题?

直接上代码,不懂请留言或私信

class Solution { public boolean verifyPreorder(int[] preorder) { if(preorder.length == 1) { return true; } Info info = getInfo(preorder, 0, preorder.length - 1); return info.isBST; } /**当前树的范围是start~end,计算这棵树的Info信息 */ public Info getInfo(int[] preorder, int start, int end) { if(start == end) { /**根据二叉搜索树的定义,如果只有一个节点就是 */ return new Info(preorder[start], preorder[start], true); } /**拿到root的值 */ int rootVal = preorder[start]; /**现在我们还没有遍历不知道左右子树的情况,就以自己考虑设置minValue、maxValue还有isBST */ int minValue = rootVal; int maxValue = rootVal; boolean isBST = true; /**这种情况只有右子树 */ if(preorder[start + 1] > preorder[start]) { /**左子树为空,我们不用做任何关于左子树的比较*/ Info info = getInfo(preorder, start + 1, end); /**统一写法*/ minValue = Math.min(info.minValue, rootVal); maxValue = Math.max(rootVal, info.maxValue); isBST = info.isBST && rootVal < info.minValue; return new Info(minValue, maxValue, isBST); } else { /**有左子树,找一下左子树的终点的下一个位置*/ int leftEndPost = searchFirstG(preorder, start + 1, end, rootVal); if(leftEndPost == -1) { /**只有左子树,剩下所有都是左子树的信息*/ Info info = getInfo(preorder, start + 1, end); minValue = Math.min(info.minValue, rootVal); maxValue = Math.max(rootVal, info.maxValue); isBST = info.isBST && rootVal > info.maxValue; return new Info(minValue, maxValue, isBST); } else { /**左右子树都有,需要获取两颗子树的信息,左子树丛start+1~leftEndPost-1,右子树从leftEndPost~end */ Info leftInfo = getInfo(preorder, start + 1, leftEndPost - 1); Info rightInfo = getInfo(preorder, leftEndPost, end); minValue = Math.min(leftInfo.minValue, Math.min(rootVal, rightInfo.minValue)); maxValue = Math.min(leftInfo.maxValue, Math.min(rootVal, rightInfo.maxValue)); /**这里需要左右子树都判断,左子树最大值必须比rootVal小,右子树最小值必须比rootVal大 */ isBST = leftInfo.isBST && rightInfo.isBST && leftInfo.maxValue < rootVal && rightInfo.minValue > rootVal; return new Info(minValue, maxValue, isBST); } } } /**获取第一个大于root值的元素,使用二分查找*/ public int searchFirstG(int[] arr, int start, int end, int rootVal) { if(start > end) { return -1; } /**先定义为-1,如果没有查找到最后就是-1,如果查找到了大雨rootVal的就更新成满足条件的最小的 */ int index = -1; while(start <= end) { int mid = start + (end - start)/2; /**根据题意,无重复元素,所以这里直接判断大于就行,一般的二分是需要写>= */ if(arr[mid] > rootVal) { /**找到了一个大于等于的,但是这未必是最终的答案,需要继续往小了找 */ index = mid; end = mid - 1; } else { /**范围错了,如果有这个值肯定在前面 */ start = mid + 1; } } return index; } } /**根据二叉搜索树的特性:根节点比它左子树的任何节点都大 比它右子树的任何节点都小,并且左右子树都是二叉搜索树,所以我们需要左右子树的以下信息:最大值、最小值、是否为二叉搜索树*/ class Info{ int minValue; int maxValue; boolean isBST; public Info(int minValue, int maxValue, boolean isBST) { this.minValue = minValue; this.maxValue = maxValue; this.isBST = isBST; } }

运行结果:

http://www.jsqmd.com/news/326522/

相关文章:

  • 零基础学网安别囤课!3 个月从 HTTP 小白到安全运维拿 offer
  • 郴州英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜
  • Qt之数据写入CSV文件
  • 对比一圈后,更贴合本科生的AI论文平台,千笔AI VS 学术猹
  • 基于Simulink的四旋翼无人机自抗扰姿态控制ADRC模型仿真与参考文献解析
  • 张家界英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜
  • 益阳英语雅思培训机构推荐.2026权威测评出国雅思辅导机构口碑榜
  • 2025年口碑逆袭!这几款常压等离子清洗机好评如潮,汽车模具五轴加工中心/三段式真空灌胶机/常压灌胶机等离子清洗机产品排名前十
  • 益阳英语雅思培训机构推荐;2026权威测评出国雅思辅导机构口碑榜
  • 效率直接起飞!AI论文平台 千笔·专业学术智能体 VS 知文AI,专为本科生打造
  • 【基于STM32单片机盲人导航 智能拐杖 老人防丢 跌倒检测导盲杖设计 系统设计(实物+程序+原理图+其他资料)】
  • 2026必备!10个降AI率平台推荐,千笔AI助你轻松应对论文查重难题
  • 益阳英语雅思培训机构推荐。2026权威测评出国雅思辅导机构口碑榜
  • 快捷方式
  • 益阳英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜
  • 【小程序毕设源码分享】基于springboot+Android的酒店预订系统App的设计与实现小程序(程序+文档+代码讲解+一条龙定制)
  • 效率直接起飞!AI论文写作软件 千笔ai写作 VS speedai,专科生专属神器
  • 常德英语雅思培训机构推荐、2026权威测评出国雅思辅导机构口碑榜
  • Qt实现行政区划轮廓图下载/一键批量下载/可编辑/天地图高德地图百度地图
  • 【小程序毕设源码分享】基于springboot+Android的高校食堂点餐配送系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • AI销冠系统是什么?主要具备哪些数字员工的特点与优势?
  • 常德英语雅思培训机构推荐.2026权威测评出国雅思辅导机构口碑榜
  • Rust 练习册 53:位运算与过敏测试架构
  • [品牌实战] 拿公模货怎么做出“品牌感”?浅析如何用 AI 批量清洗工厂 Logo,低成本打造私有 Listing
  • 岳阳英语雅思培训机构推荐。2026权威测评出国雅思辅导机构口碑榜
  • 常德英语雅思培训机构推荐。2026权威测评出国雅思辅导机构口碑榜
  • 强缓存失效了怎么办?深度解析浏览器内存缓存与硬盘缓存的存储逻辑
  • 岳阳英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜
  • [蓝海掘金] 英语主图在墨西哥/越南卖不动?浅析如何用 AI 批量搞定“小语种”图片本地化,抢占流量洼地
  • 常德英语雅思培训机构推荐;2026权威测评出国雅思辅导机构口碑榜