【LeetCode: 1026. 节点与其祖先之间的最大差值 + DFS】

OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation 电磁线圈组驱动经典系统,可以作为参考。 OctoMag: 用于5自由度无线微操作的一个电磁铁系统 OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation [1] Paper Link Authors: J. J. Abbott, etc. 2010, TRO IEEE Transactions on Robot... 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给定二叉树的根节点 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

🥦 求解思路
  1. 该题目通过DFS求解,关键的地方在于如何设计递归函数,递归的参数是当前的节点,其实不容易想到的地方就是返回值,因为题目让我们求解的是祖先与节点的差值,如果返回值是这个,那么就会直接忽略一些情况,所以,不能是这个。
  2. 继续想,祖先与节点的差值,节点的数值可能比祖先的大,也可能比祖先的小,而我们要求的又是在当前祖先下,所有的节点与其差值最大。那么最终的答案就可能来自俩种情况,一个是子树的最大值,一个是子树的最小数值。
  3. 到此为止,递归的返回值也就浮出水面,就是当前节点下左子树的最小值,与最大值。
  4. 最终的答案,我们通过一个全局变量记录,最终返回即可。
  5. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
/**
 * 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 {
    int max = 0;

    public int maxAncestorDiff(TreeNode root) {
        process(root);
        return max;
    }

    public int[] process(TreeNode root) {
        if (root == null)
            return new int[] { Integer.MAX_VALUE, Integer.MIN_VALUE };
        int[] left = process(root.left);
        int[] right = process(root.right);
        int leftAns = Math.min(root.val, Math.min(left[0], right[0]));
        int rightAns = Math.max(root.val, Math.max(left[1], right[1]));
        max = Math.max(max, Math.max(root.val - leftAns, rightAns - root.val));
        return new int[] { leftAns, rightAns };
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案 hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案。 阅读详情

相关推荐

避坑实录:用certificate-manager重置vCenter 6.7证书时遇到的三个致命陷阱

本文详细解析了使用certificate-manager重置vCenter 6.7证书时可能遇到的三大致命陷阱,包括进度卡在85%的服务启动僵局、脚本突然退出的静默杀手以及密码错误锁死的隐藏机制。通过实战验证的解决方案和高级恢复技巧,帮助系统管理员有效避免vCenter环境瘫痪,确保证书更新过程顺利进行。

g5h6i7j的博客 918

leetcode:1026. 节点与其祖先之间的最大差值(dfs)

链接:https://leetcode-cn.com/problems/maximum-difference-between-node-and-ancestor/ 遍历每条路径,寻找当前路径上的最大差值。dfs函数的参数为当前节点,路径上已遍历到的最大值与最小值。这种做法的关键在于祖先节点向子节点传递信息,在子节点处运算。当然用适当的数据结构记录左右子树分别的最大最小值然后在根节点运算也是一种解法。 C++代码: /** * Definition for a binary tree node. * st

Gomamon的博客 267

欧姆龙PLC与fanuc发那科机器人进行Ethrenet ip通信测试

近期在做发那科FANUC的通讯,会吧CC-LINK、Profibus-DP、Profinet I/O、DeviceNet、EtherNet/IP这些常用通讯做成文档发上来,大家喜欢的话可以关注 注:做对应的通讯,在机器人控制柜都需要安装对应的板卡以及软件功能 截图中的程序设置和机器人EDS插件在下面链接 https://download.csdn.net/download/gojava/13770799 PLC为主站 机器人为从站 一、硬件部分 欧姆龙PLC ...

七兔自习室 1万+

LeetCode 1026. 节点与其祖先之间的最大差值(二叉树DFS)

1. 题目 给定二叉树的根节点 root,找出存在于不同节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 示例: 输入:[8,3,10,1,6,null,14,null,null,4,7,13] 输出:7 解释: 我们有大量的节...

Michael是个半路程序员 1248

maya后台批量比对maya文件层级

在cg制作过程中,为了统一制作规范,提高效率我们Pipeline都会制作一个比对层级的工具下面介绍的是maya利用batch文件进行模型与绑定和材质文件进行比对层级。 直接上代码: #!usr/bin/env python # -*- encoding: utf-8 -*- """ @author:MCC @file: compareUI @time: 2018/11/21 16:29 """ i...

CGpipelineTD 1641

Buck-Boost电路

前面我们学习了降压的Buck电路 (左图) 和升压的Boost电路 (右图),那么如果我们把Buck电路和Boost电路结合一下会发生什么情况? 我们尝试着画一下: 我们用Buck电路作为输入,然后用Boost电路进行调整,最后输出。因此Buck电路中的负载、Boost电路的电源都可以删掉。得到下图: 由于Buck电路中的C2的作用是在输出的时候滤波,这个功能已经由Boost电路中的C1实现了,因此可以删除Buck电路中的C2电容。得到下图: 这里两个电感处于串联状态,可以合二为一,得到下面的电路:

wangeil007的博客 4万+

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

dfs

EQUINOX1的博客 443

RT-DETR改进策略【Conv和Transformer】| HiLo注意力机制 通过分离处理图像的高频和低频信息,高效处理图像特征

本文记录的是利用改进检测模型,针对目标检测中面临的多尺度特征融合效率与长距离依赖建模难题,HiLo注意力模块的引入旨在通过频率解耦策略优化高分辨率特征处理,将高频细节(如目标边缘)与低频语义(如场景结构)分离建模,提升目标检测精度。Fast Vision Transformers with HiLo AttentionHiLo注意力模块的提出源于对传统自注意力机制局限性的反思。传统多头自注意力(MSA)在处理高分辨率图像时存在以下问题:HiLo将注意力模块分为高频(Hi-Fi)和低频(Lo-Fi)两个分支,

Limiiiing的博客 813

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

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

Cosmoshhhyyy的博客 571

【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换

1 坐标系定义及转换   首先介绍一下世界坐标系和相机坐标系之间的转换,它们之间是存在一个转换关系的。现假设空间中一点X,它在相机坐标系下的坐标是Xcamera,在世界坐标系下的坐标是Xworld。假设它通过R和t实现从相机坐标系到世界坐标系之间的转换: Xworld = RXcamera + t   那么,由上式,我们可以推得从世界坐标系向相机坐标系的转换关系(RT=R-1,所以通常直接使用RT即可): Xcamera = RTXworld - RTt   所以,两个坐标系之间的转换,需要看其具体

zeeq的博客 2万+

SAP 消息号T-CODE

SAP消息号修改汇总 确实有很多消息是可以修改的 FI: oBA5|oFMG|oFPM MM: oMRM|oKZZ|oMT4|oMCQ|o04C| SD: oVAH(V4)|oVM1(VL) CO:  oPR4_ACT|oPR4_CK|oPR4_CKML|oPR4_CKPF|oPR4_KKA|oPR4_KKP|oPR4_KKS| oPR4_KKS1|oPR4_P

heng0757的专栏 1万+

[HOT 100] 1026. 节点与其祖先之间的最大差值

1026. 节点与其祖先之间的最大差值 - 力扣(LeetCode)给定二叉树的根节点 ,找出存在于 不同 节点 和 之间的最大值 ,其中 ,且 是 的祖先。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 4. 解题思路 要找到二叉树中所有祖先节点与后代节点之间的最大绝对差值,可以通过深度优先搜索(DFS)遍历每个节点,并维护从根到当前节点的路径上的最小值和最大值。对于每个节点,计算其值与路径最小值和最大值的差值,更新全局最大

人生需要动态规划 学习需要贪心算法 617

解锁Vscode:C/C++环境配置超详细指南

本文详细介绍如何在 VSCode 中配置 C/C++ 开发环境,帮助开发者快速搭建高效的编码调试环境。内容涵盖前期准备、软件下载安装、环境变量配置、工作区文件设置及测试运行全流程:首先需准备 VSCode 编辑器、MinGW-w64 编译器及 C/C++ 插件;接着完成工具下载与安装,配置系统环境变量以确保编译器可全局调用;然后通过创建.vscode工作区文件夹,配置核心文件,实现代码智能提示与调试功能;最后通过编写 Hello World 示例验证环境可用性,并附上常见问题排查方案。

邓邓子的博客 3044

LeetCode-1026. 节点与其祖先之间的最大差值-深度优先搜索

/** 1026. 节点与其祖先之间的最大差值 * @author 作者 Your-Name: * @version 创建时间:2020年3月5日 上午9:44:01 * 给定二叉树的根节点 root,找出存在于不同节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的...

l769440473的博客 264

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode-1026. 节点与其祖先之间的最大差值【树 深度优先搜索 二叉树】

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。递归到空节点时,mx 是从根到叶子的路径上的最大值,mn 是从根到叶子的路径上的最小值,所以 mx−mn 就是从根到叶子的路径上任意两点的最大差值。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)输入:root = [8,3,10,1,6,null,14,null,null,4,7,13]

zik的博客 467

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode每日一题1026.节点与其祖先之间的最大差值(DFS)

深度搜索,分别求解每条路径的最大差值。

ChristopherI的博客 163

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Leetcode 1026.节点与其祖先之间的最大差值(Maximum Difference Between Node and Ancestor)

Leetcode 1026.节点与其祖先之间的最大差值 1 题目描述(Leetcode题目链接)   给定二叉树的根节点 root,找出存在于不同节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 输入:[8,3,10,1,6,nu...

qq_39378221的博客 305

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

给定二叉树的根节点root,找出存在于不同节点A和B之间的最大值V,其中V = |A.val - B.val|,且A是B的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 示例: 输入:[8,3,10,1,6,null,14,null,null,4,7,13] 输出:7 解释: 我们有大量...

Keep Coding 945

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

Leetcode 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 解释: 我们有大量的节点与其祖先的差值,其中一些如下:

weixin_43891775的博客 252

leetCode 1026. 节点与其祖先之间的最大差值 + 递归

(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。对于一条从根出发向下的路径,实际上算的是这条路径上。故,无需记录递归路径中的全部节点值,,在递归到终点时才去更新答案。,那么从根到叶子的路径上。无需每个节点都去更新答案。是从根到叶子的路径上的。

呵呵哒!的博客 728

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

给定二叉树的根节点root,找出存在于不同节点A 和B之间的最大值 V,其中V = |A.val - B.val|,且A是B的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 输入:[8,3,10,1,6,null,14,null,null,4,7,13] 输出:7 解释: 我们有大量的节点与其祖先的差...

ludan_xia的博客 288

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

LeetCode 1026. 节点与其祖先之间的最大差值 给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)

<font color="Pink">Tisfy的博客</font> 423

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

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

Sugar_wolf的博客 247

【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣508, 1026, 951

请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。比较简单,dfs自顶向下递归,用形参记录路径上的最大值和最小值。,如下所示:选择任意节点,然后交换它的左子树和右子树。我们翻转值为 1,3 以及 5 的三个节点。

2301_80912559的博客 1186

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

题目描述 给定二叉树的根节点root,找出存在于不同节点A 和B之间的最大值 V,其中V = |A.val - B.val|,且A是B的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 示例: 输入:[8,3,10,1,6,null,14,null,null,4,7,13] 输出:7 解释: 我们...

weixin_35338624的博客 304

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

输入:root = [8,3,10,1,6,null,14,null,null,4,7,13]在所有可能的差值中,最大值 7 由 |8 - 1| = 7 得出。输入:root = [1,null,2,null,0,3]的过程中,记录路径上的最大结点值 和 最小结点值。时,说明这条路径已经遍历结束,我们就可以更新答案。的祖先,那么我们认为。

感觉画质不如...原神的博客 148
上一篇: 【LeetCode: 95. 不同的二叉搜索树 II + DFS】
下一篇: 【LeetCode: 21. 合并两个有序链表 + 链表】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值