news 2026/9/8 11:30:04

Leetcode会员尊享100题:270.最接近的二叉树值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Leetcode会员尊享100题:270.最接近的二叉树值

给你二叉搜索树的根节点root和一个目标值target,请在该二叉搜索树中找到最接近目标值target的数值。如果有多个答案,返回最小的那个。

示例 1:

输入:root = [4,2,5,1,3], target = 3.714286输出:4

示例 2:

输入:root = [1], target = 4.428571输出:1

提示:

  • 树中节点的数目在范围[1, 104]
  • 0 <= Node.val <= 109
  • -109 <= target <= 109

直接上代码:

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public int closestValue(TreeNode root, double target) { Info info = getInfo(root, target); return info.value; } public Info getInfo(TreeNode root, double target) { if(root == null) { return new Info(Integer.MAX_VALUE, Integer.MAX_VALUE); } if(root.left == null && root.right == null) { return new Info(root.val, Math.abs(root.val - target)); } /**拿到左右子树的信息 */ Info leftInfo = getInfo(root.left, target); Info rightInfo = getInfo(root.right, target); /**当前的最小差是左右树的最小差以及跟节点和target的差的最小值 */ double distance = Math.min(Math.abs(root.val - target), Math.min(leftInfo.distance, rightInfo.distance)); int value = distance == leftInfo.distance? leftInfo.value : distance == rightInfo.distance? rightInfo.value : root.val; /**有可能有重复的值,需要判断取最小那个 */ if(distance == leftInfo.distance) { value = Math.min(value, leftInfo.value); } if(distance == rightInfo.distance) { value = Math.min(value, rightInfo.value); } if(distance == Math.abs(root.val - target)) { value = Math.min(value, root.val); } /**返回当前树的信息 */ return new Info(value, distance); } } class Info { int value; double distance; public Info(int value, double distance) { this.value = value; this.distance = distance; } }

看不懂的请私信或者留言,二叉树的所有问题,我倾向于使用二叉树的递归套路,这个题其实可以用DFS,我懒得用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 0:45:09

蒙特卡洛模拟电动汽车的有序充放电策略及其在优化调度、微电网与综合能源、储能、新能源方向的基础入...

蒙特卡洛模拟电动汽车有序充放电(matlab)&#xff0c;适合优化调度&#xff0c;微电网&#xff0c;综合能源、储能、新能源方向的基础入门学习 最近在折腾电动汽车充放电调度的问题&#xff0c;发现蒙特卡洛模拟真是个神器。今天咱们就用Matlab整点有意思的——模拟100辆电动汽…

作者头像 李华
网站建设 2026/9/7 22:29:17

​三拼域名chaojidao.com深度点评​

三拼域名chaojidao.com深度点评 核心结论&#xff1a;chaojidao.com是一枚含义明确、行业属性强、终端潜力巨大的优质三拼域名&#xff0c;尤其在农业科技与食品领域具备突出价值&#xff0c;同时存在 "小米超级岛" 概念的跨界联想空间&#xff0c;建议长期持有并重…

作者头像 李华
网站建设 2026/9/2 17:36:07

漏洞扫描十大工具

漏洞扫描十大工具 AwVS AwVS是一款知名的Web网络漏洞扫描工具&#xff0c;它通过网络爬虫测试你的网站安全&#xff0c;检测流行安全漏洞。 a)、自动的客户端脚本分析器&#xff0c;允许对Ajax和Web 2.0应用程序进行安全性测试 b)、业内最先进且深入的SQL 注入和跨站脚本测试…

作者头像 李华
网站建设 2026/9/5 12:41:48

Redshift vs Octane 深度对比:哪款渲染器更适合 Cinema 4D 工作流程?

在 Cinema 4D 的世界里&#xff0c;选择合适的 GPU 渲染器能够显著提升你的创作效率和渲染质量。当前主流的两个选择是 Redshift 和 OctaneRender&#xff0c;它们各有特点&#xff0c;适合不同风格的项目需求。本文将从核心性能和工作流程体验角度&#xff0c;为你做一个清晰对…

作者头像 李华
网站建设 2026/9/3 1:32:42

【vtkPolyDataPointSampler 】——多边形数据点采样技术详解

VTK核心类解析:vtkPolyDataPointSampler 多边形数据点采样技术详解 简单说,vtkPolyDataPointSampler 就是 VTK里的 “点生成器”—— 专门给 3D 模型(比如三角形、多边形组成的物体)表面或内部,按需求打一堆采样点,生成的点云能直接用在后续的可视化、建模或计算里。 一…

作者头像 李华
网站建设 2026/9/3 7:59:35

电子签章选型指南:云巨头生态服务与垂直专业厂商的六大维度解析

随着电子签章应用在市场越来越普及和受追捧&#xff0c;超级大厂也相继推出了自己的电子签章产品&#xff0c;如华为的华为云电子签、阿里的阿里云电子签、腾讯的腾讯电子签服务。那这些大厂推出的电子签章产品和服务与传统第三方电子签公司北京安证通有什么相同和区别呢&#…

作者头像 李华