1026. 节点与其祖先之间的最大差值(4-19日

news2025/1/21 18:47:07

题目:给定二叉树的根节点 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 得出。

思路:最大的绝对值只能出现在子节点的最大值或者最小值。

代码:(low low 代码,计算以每个节点为根的子树的最大值和最小值,使用ans计算最大的绝对值)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def maxAncestorDiff(self, root: Optional[TreeNode]) -> int:
        def dfs(root):
            val = root.val
            mx = val
            mi = val
            if root.left is not None:
                mx1, mi1 = dfs(root.left)
                mx, mi = max(mx, mx1), min(mi, mi1)
            if root.right is not None:
                mx1, mi1 = dfs(root.right)
                mx, mi = max(mx, mx1), min(mi, mi1)
            self.ans = max(max(abs(val - mx), abs(val-mi)), self.ans)
            return mx, mi
        self.ans = 0
        dfs(root)
        return self.ans

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

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

相关文章

context 浅析

在缺少直接调用关系的两个函数之间传递数据,一般都会考虑使用 context,而 context 也被用来存储整个请求链路的公参信息,用户 uid、链路 traceID、特定的业务参数等。函数第一个参数类型设置为 context.Context 也是 Go 的默认写法&#xff0…

2 常见模块库(3)

2.9 积分模块(2) External reset: 在什么条件下进行外部重置操作描述一下每个选项: Rising:当重置信号从非正的值(0或负值)变为正值时,重置积分器的状态。 Falling:当重置信号从正…

Java每日一练(20230419)

目录 1. 二叉树的最大深度 🌟 2. 二叉树的层序遍历 🌟🌟 3. 最短回文串 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Jav…

双向带头循环链表的实现

双向带头循环链表 双向带头循环链表结构讲解期望实现功能创建链表和头节点作用头插和头删头插头删 尾插与尾删尾插尾删 pos 删除和插入插入删除 打印和查找 整体代码 这个数据结构可以算是YYDS的存在了。 我们前面讲过的单链表,尾删和尾插需要遍历数组,极…

是时候该换掉你的axios了

axios是一个基于Promise的HTTP客户端,每周的npm下载量4000W,如果回到在10年前,promise式的请求工具是一个很大的创新,它解决了请求繁琐的问题,在那个性能要求不那么高的年代可谓是一骑绝尘。但随着时间的推移&#xff…

【网络】UDP协议 TCP协议

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…

Centos7安装Elasticsearch6.4.3和Kibana6.4.3

一、下载好安装文件上传到/usr/local 二、安装Java环境 1)、解压jdk tar -zxvf jdk-8u181-linux-x64.tar.gz2)、 配置Java环境变量 vim /etc/profile 3)、profile末尾添加 export JAVA_HOME/usr/local/jdk1.8.0_181 export PATH$JAVA_HO…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)---昇腾AI入门课(PyTorch)微认证考试

1、下列不属于昇腾计算服务层的是() 2、AscendCL的优势包括() 3、使用AscendCL开发应用的基本流程,以下正确的是? 4、关于AscendCL初始化,以下说法不正确的是? 5、以下关于ATC工具说法正确的是 6、模型转换工具的名称是&#xf…

深入实战探究 Vue 2.7 Composition API 的强大之处

最近几年公司开发一直使用的是 Vue2.6,对于逻辑复用使用的是 Mixin 方式,但随着项目体量的增加,带了一些问题,特别是:数据混乱问题:实例上的数据属性从当前模板文件中无法查取到,存在多个 Mixin…

API 鉴权都有哪些分类,这些重点不要错过

API鉴权是保证API安全性和可用性的一项重要措施。通过API鉴权,系统可以对用户或者应用进行有效的身份认证和权限管理。一般来说,在实际开发中,我们使用以下几种API鉴权方式: 1. 基本认证 基本认证是API鉴权的一种最基本形式。此方…

如何创建Spring项目

创建Spring项目 创建一个Maven项目 这里使用的是2023版本的idea。 添加Spring框架支持 在项目的pom.xml中添加Spring支持。这里可以到中央仓库找一下。 <dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dep…

Android Binder 图文解释和驱动源码分析

前言 最近在学习Binder&#xff0c;之前都是跳过相关细节&#xff0c;通过阅读文章对Binder有了一些认识&#xff0c;但是并没有真正理解Binder。如果要深入理解Framework的代码&#xff0c;就必须要真正理解Binder。 我学习Binder的方法&#xff1a; 一边阅读Gityuan的Bind…

视觉语言模型究竟能帮助我们完成哪些工作?

当前&#xff0c;多模式人工智能已经成为一个街谈巷议的热门话题。随着GPT-4的最近发布&#xff0c;我们看到了无数可能出现的新应用和未来技术&#xff0c;而这在六个月前是不可想象的。事实上&#xff0c;视觉语言模型对许多不同的任务都普遍有用。例如&#xff0c;您可以使用…

vmware VM虚拟机去虚拟化教程 硬件虚拟机 过鲁大师检测

一 准备工作 1. 这里演示的VM虚拟机版本是12.5.9 虚拟机系统是win7 64位 2. 用到的工具 winhex和Phoenix BIOS Editor 下载地址工具 链接&#xff1a;https://pan.baidu.com/s/1b3FfA3FyQ_lnFQSjpCGLGg?pwd1221 提取码&#xff1a;1221 3. 注意&#…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)---昇腾AI入门课(上)

AscendCL快速入门 AscendCL概述 AscendCL功能介绍 AscendCL基础概念解析 应用开发流程 样例代码精讲

Vivado综合参数设置

如果你正在使用Vivado开发套件进行设计&#xff0c;你会发现综合设置中提供了许多综合选项。这些选项对综合结果有着潜在的影响&#xff0c;而且能够提升设计效率。为了更好地利用这些资源&#xff0c;需要仔细研究每一个选项的功能。本文将要介绍一下Vivado的综合参数设置。 …

SpringBoot解决用户重复提交订单(方式一:通过唯一索引实现)

文章目录 前言1、方案实现1.1、给数据库表增加唯一键约束1.2、编写获取请求唯一ID的接口1.3、业务提交的时候&#xff0c;检查唯一ID 2、小结 前言 对于投入运营的软件系统&#xff08;商城、物流、工厂等&#xff09;&#xff0c;最近小编在巡检项目数据库的时候&#xff0c;发…

【场景生成与削减】基于蒙特卡洛法场景生成及启发式同步回带削减风电、光伏、负荷研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

学习笔记 -- C++性能评估工具Perf

Installation sudo apt update sudo apt install linux-tools-common查看你的内核&#xff1a; uname -r我的输出&#xff1a; $ uname -r 5.15.0-67-generic安装对应的 tools&#xff1a; sudo apt install linux-tools-5.15.0-67-genericImplementation 1、Perf List 状…

PyTorch 人工智能研讨会:1~5

原文&#xff1a;The Deep Learning with PyTorch Workshop 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心…