LeetCode:1026. 节点与其祖先之间的最大差值(DFS Java)

目录

1026. 节点与其祖先之间的最大差值

题目描述:

实现代码与解析:

DFS

原理思路:


1026. 节点与其祖先之间的最大差值

题目描述:

        给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。

(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)

示例 1:

输入:root = [8,3,10,1,6,null,14,null,null,4,7,13]
输出:7
解释: 
我们有大量的节点与其祖先的差值,其中一些如下:
|8 - 3| = 5
|3 - 7| = 4
|8 - 1| = 7
|10 - 13| = 3
在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。

示例 2:

输入:root = [1,null,2,null,0,3]
输出:3

提示:

  • 树中的节点数在 2 到 5000 之间。
  • 0 <= Node.val <= 105

实现代码与解析:

DFS

/*** 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 res = 0;public void dfs(TreeNode t, int mx, int mi) {int x = t.val;res = Math.max(res, Math.max(Math.abs(mx - x), Math.abs(mi - x)));mx = Math.max(x, mx);mi = Math.min(x, mi);if (t.left != null) dfs(t.left, mx, mi);if (t.right != null) dfs(t.right, mx, mi);}public int maxAncestorDiff(TreeNode root) {dfs(root, root.val, root.val);return res;}
}

原理思路:

        求从根节点方向向叶子节点方向的最大差值,因为是取绝对值,所以DFS记录路径上的最大值和最小值,然后与当前遍历的节点取差值,更新res,max,min即可。还是比较简单的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面经】3月29日 美团/美团平台/后端/一面/1h

面试官先介绍自己部门的业务&#xff1a;存储中心&#xff0c;涉及到大量数据的离线处理&#xff08;亿级别&#xff09;。 手撕&#xff08;删除链表倒数第k个节点&#xff09; 自我介绍 项目介绍&#xff08;还没说完被打断了&#xff0c;面试官说你这个感觉就是把功能说了一…

11-1(2)-CSS 背景+CSS 精灵图

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 一、CSS 背景1 背景颜色2 背景色半透明3 背景图片4 背景平铺5 背景图片位置6 …

【数据结构与算法】(一)数据结构相关的基本概念

文章目录 【数据结构与算法】&#xff08;一&#xff09;数据结构相关的基本概念前言1.1 数据结构的研究内容1.2 基本概念和术语1.2.1 数据、数据元素、数据项和数据对象1.2.2 数据结构1.2.3 数据类型和抽象数据类型 1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法…

中国电子学会(CEIT)2021年09月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试三级 2021年09月 编程题五道 总分:100分一、菲波那契数列(20分) 菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波…

深度剖析:网络安全中的红蓝对抗策略

红蓝对抗 红蓝对抗服务方案 在蓝队服务中&#xff0c;作为攻击方将开展对目标资产的模拟入侵&#xff0c;寻找攻击路径&#xff0c;发现安全漏洞和隐患。除获取目标系统的关键信息&#xff08;包括但不限于资产信息、重要业务数据、代码或管理员账号等&#xff09;外&#x…

9(10)-3-CSS 定位

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 CSS 定位1 定位组成2 定位模式3 边偏移4 静态定位 static5 相对定位 relative…

如何在iPhone上恢复永久删除的照片?

2007 年&#xff0c;Apple Inc. 推出了这款震撼人心的智能手机&#xff0c;后来被称为 iPhone。您会惊讶地发现&#xff0c;迄今为止&#xff0c;Apple Inc. 已售罄 7 亿台 iPhone 设备。根据 2023 年 8 月的一项调查数据&#xff0c;95% 的智能手机利润都落入了苹果公司的口袋…

ubuntu同步网络时间

安装ntpdate sudo apt-get update sudo apt-get install ntpdate设置系统时间与网络时间同步 sudo ntpdate cn.pool.ntp.org设置时区亚洲上海 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime设置时间为24小时制 echo "LC_TIMEen_DK.UTF-8" >>/…

Django--方法

path() 方法 一个路由配置模块就是一个urlpatterns列表&#xff0c;列表的每个元素都是一项path&#xff0c;每一项path都是以path()的形式存在。 path()方法可以接收4个参数&#xff0c;其中前2个是必须的&#xff1a;route和view&#xff0c;以及2个可选的参数&#xff1a;k…

跨平台的组播测试工具mping、udp_sender及udp_reciver的源码及使用教程

文章目录 1.前言2.mping工具编译3.mping工具使用3.1 参数说明3.1 组播播发&#xff08;-s&#xff09;3.1 组播播发&#xff08;-r&#xff09;3.3 Linux下mping测试 4.Linux组播udp_sender及udp_reciver使用4.1 udp_sender源码4.1 udp_reciver源码4.3 编译方法4.4 测试使用4.4…

android11 SystemUI入門之KeyguardPatternView解析

view层级树为&#xff1a; 被包含在 keyguard_host_view.xml中 。 <?xml version"1.0" encoding"utf-8"?> <!-- This is the host view that generally contains two sub views: the widget viewand the security view. --> <com.andro…

并发编程01-深入理解Java并发/线程等待/通知机制

为什么我们要学习并发编程&#xff1f; 最直白的原因&#xff0c;因为面试需要&#xff0c;我们来看看美团和阿里对 Java 岗位的 JD&#xff1a; 从上面两大互联网公司的招聘需求可以看到&#xff0c; 大厂的 Java 岗的并发编程能力属于标配。 而在非大厂的公司&#xff0c; 并…

16_USART串口发送和接收数据

USART串口发送和接收数据 USART串口发送和接收数据 USART串口发送和接收数据 主函数 #include "stm32f10x.h" // Device header #include "Delay.h" #include "LED.h" #include "Key.h" #include "stdint.h&q…

Linux mattrib命令教程:如何管理MS-DOS文件的属性(附实例详解和注意事项)

Linux mattrib命令介绍 mattrib 是一个用于更改MS-DOS文件属性标志的命令。它可以添加属性标志到一个MS-DOS文件&#xff08;使用 操作符&#xff09;或者移除属性标志&#xff08;使用 - 操作符&#xff09;。 Linux mattrib命令适用的Linux版本 mattrib 命令在大多数Linu…

【算法】寻找数组中心下标

题目 给定一个非空数组&#xff0c;找到一个元素&#xff0c;该元素左侧元素和等于其右侧元素和&#xff0c;返回该元素下标。 如果没有则返回-1&#xff0c;有多个则返回最左侧一个。 原理 1、双指针 定义两个变量&#xff0c;一个为从左侧累加的和 leftSum 0&#xff0c…

前端分页和后端分页

分页一般是前端分页还是后端分页 分页可以在前端或后端进行&#xff0c;具体取决于项目的需求和实现方式。以下是前端分页和后端分页的一些特点和适用场景&#xff1a; 前端分页&#xff1a; 特点&#xff1a;前端分页是指在前端&#xff08;浏览器端&#xff09;对数据进行分…

Ubuntu22.04中基于Qt开发Android App

文章目录 前言在Ubuntu22.04中配置开发环境案例测试参考 前言 使用Qt开发手机应用程序是一种高效且灵活的选择。Qt作为一个跨平台的开发框架&#xff0c;为开发者提供了统一的开发体验和丰富的功能库。首先&#xff0c;Qt的跨平台性让开发者可以使用相同的代码库在不同的操作系…

Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id

问题 运行程序出现&#xff1a; Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id “odom” from authority “unknown_publisher” because of an invalid quaternion in the transform (0.0 0.0 0.0 0.707) 主要是四元数没有归一化 Eigen::Quatern…

【PostgreSQL】技术传承:使用Docker快速部署PostgreSQL数据库

前言 PostgreSQL的重要贡献者Simon Riggs因一起坠机事故不幸离世。Simon Riggs是英国著名的软件与服务领导者&#xff0c;也是PostgreSQL的主要开发者和贡献者。事故发生在英国当地时间3月26日13:41分&#xff0c;当时他驾驶的私人通用航空Cirrus SR22飞机在英国达克斯福德机场…

java——文件上传

一、文件上传——简介 文件上传的简介&#xff1a;文件上传是指将本地计算机中的文件传输到网络上的服务器或另一台计算机上的过程。在 Web 开发中&#xff0c;文件上传通常指的是将用户通过 Web 页面提交的文件&#xff08;如图像、文档、音频、视频等&#xff09;传输到服务器…