news 2026/4/3 6:11:12

LC.783 | 二叉搜索树节点最小距离 | 树 | 中序遍历有序性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.783 | 二叉搜索树节点最小距离 | 树 | 中序遍历有序性

输入:二叉搜索树的根节点root

要求:计算树中任意两个不同节点值之间的最小差值。

输出:一个整数,表示最小差值。


思路:

这道题如果是一棵普通的二叉树,我们需要把所有节点值存下来,两两比较,复杂度是 O(N^2)。但因为它是二叉搜索树 (BST),我们可以利用其特性将问题极大简化。

  1. 核心转化:BST -> 有序数组
    • 二叉搜索树的中序遍历结果是一个单调递增的有序数组
    • 在一个有序数组中,最小的差值一定出现在相邻的两个数之间
    • 例如:[1, 4, 7, 9]。差值只可能产生在4-1,7-4,9-7之间,绝对不可能产生在9-1之间。
  2. 优化空间:双指针思维
    • 我们不需要真的开辟一个数组把所有数存下来(那样空间复杂度是 O(N))。
    • 我们在遍历过程中,只需要知道“上一个遍历到的节点值” (lastprev)是多少。
    • 当前节点值root->val减去上一个节点值last,就是当前的相邻差值。我们不断更新这个差值的最小值即可。
  3. 处理细节:
    • 我们需要一个变量last来记录上一个节点的值。初始化为-1(或者一个不可能的负数),表示这是第一个节点,还没上家,不计算差值。

复杂度:

  • 时间复杂度:O(N)
    • 需要中序遍历整棵树。
  • 空间复杂度:O(H)
    • H 为树的高度,主要是递归栈的空间。

class Solution { public: void inorder(TreeNode* root, int& ans, int& last) { if (!root) { return; } // 1. 递归左子树 inorder(root->left, ans, last); // 2. 处理当前节点(中序位置) if (last == -1) { // 如果是第一个节点,只需更新 last,没法计算差值 last = root->val; } else { // 计算当前节点与上一个节点的差值,并更新最小值 // 因为是中序遍历,root->val 一定大于 last,所以不用 abs 也行 ans = min(abs(root->val - last), ans); // 更新 last 为当前节点,供下一次使用 last = root->val; } // 3. 递归右子树 inorder(root->right, ans, last); } int minDiffInBST(TreeNode* root) { int ans = INT_MAX; int last = -1; // 用于记录中序遍历中的“上一个”节点值 inorder(root, ans, last); return ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 20:35:16

微电网能量管理系统:解锁零碳园区智慧能源管理的核心技术与实践路径

建设零碳园区,首先要构建以可再生能源为核心的清洁供能体系。这要求园区充分利用屋顶、空地等空间部署分布式光伏,并因地制宜接入风电、地热等本地清洁能源。然而,可再生能源具有间歇性和波动性,要确保稳定可靠的零碳电力供应&…

作者头像 李华
网站建设 2026/4/1 23:58:32

部署失败?可能是端口没配对!私有化Dify端口配置权威指南

第一章:部署失败?可能是端口没配对! 在微服务架构或容器化部署中,应用无法访问或连接超时是常见问题。其中,端口未正确配对往往是被忽视的“隐形杀手”。无论是本地开发环境还是生产集群,只要网络通信链路中…

作者头像 李华
网站建设 2026/3/28 22:47:45

3步完成Dify工作流依赖完整性验证,提升系统稳定性90%

第一章:Dify工作流的依赖检查在构建和运行 Dify 工作流时,确保所有依赖项正确配置是保障流程稳定执行的关键前提。依赖检查不仅涵盖外部服务连接状态,还包括环境变量、API 密钥、数据库访问权限以及第三方 SDK 的版本兼容性。依赖项清单 Pyth…

作者头像 李华
网站建设 2026/4/1 12:28:33

社区居民友爱互助平台源码 Java+SpringBoot+Vue3

一、关键词 社区居民友爱互助平台,社区邻里互助平台,居民友爱帮扶平台二、作品包含 源码数据库全套环境和工具资源本地部署教程三、项目技术 前端技术:Html、Css、Js、Vue3.0、Element-plus 后端技术:Java、SpringBoot2.0、MyBati…

作者头像 李华
网站建设 2026/3/25 18:20:57

如何在2小时内完成Dify对Tesseract 5.3语言包的完整适配?

第一章:Dify与Tesseract 5.3语言包适配概述 在构建智能文档识别系统时,Dify作为AI工作流编排平台,常需集成OCR引擎进行文本提取。Tesseract OCR 5.3作为主流开源光学字符识别工具,其语言包的准确配置直接影响识别效果。为确保Dify…

作者头像 李华
网站建设 2026/3/28 11:32:38

终于被CCF A类会议AAAI录用了!

今年,计算机视觉相关的会议和期刊竞争都异常惨烈!不止CVPR这种顶会,普通的CCF-A类和BC类会议的发表难度,也增加的不是一星半点!很多同学经常抱怨 科研真是太难了,竞争压力大,导师不给指导、不开…

作者头像 李华