【Java|golang】1026. 节点与其祖先之间的最大差值---避坑,注意:golang中同一个包下的全局变量只加载一次。

news2025/1/17 21:50:30

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

    int res=0;
    public int maxAncestorDiff(TreeNode root) {
        dfs(root,root.val,root.val);
        return res;
    }
    public void dfs(TreeNode root,int max,int min) {
        if (root==null){
            return;
        }
        if (root.val>max){
            max= root.val;
        }
        if (root.val<min){
            min= root.val;
        }
        res=Math.max(max-min,res);
        dfs(root.left,max,min);
        dfs(root.right,max,min);
    }

在这里插入图片描述

正确定义全局变量:
var res int
func maxAncestorDiff(root *TreeNode) int {
	res=0
	dfs(root,root.Val,root.Val)
	return res
}

func dfs(root *TreeNode, max int, min int) {
	if root == nil {
		return
	}
	if root.Val > max {
		max = root.Val
	}
	if root.Val < min {
		min = root.Val
	}
	if max-min>res {
		res=max-min
	}
	dfs(root.Left, max, min)
	dfs(root.Right, max, min)
}

在这里插入图片描述

错误代码:
var res=0
func maxAncestorDiff(root *TreeNode) int {
	dfs(root,root.Val,root.Val)
	return res
}

func dfs(root *TreeNode, max int, min int) {
	if root == nil {
		return
	}
	if root.Val > max {
		max = root.Val
	}
	if root.Val < min {
		min = root.Val
	}
	if max-min>res {
		res=max-min
	}
	dfs(root.Left, max, min)
	dfs(root.Right, max, min)
}

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

环境变量的初始

目录 &#xff1a; 1.引出环境变量 2. 简单使用一下环境变量 3.环境变量的概念 4.本地变量 5.环境变量的相关命令 6.环境变量获取和操作的方式 7. getenv&#xff08;最常用的程序获取环境变量的方式&#xff09; 8.环境变量的全局属性 -------------------------------------…

擎创动态 | 二等奖!擎创携手国家电网喜获“浪潮信息杯”绝佳成绩

近日&#xff0c;2022电力行业信息化年会于湖南省长沙市圆满落下帷幕。据悉&#xff0c;今年是电力行业信息化年会举办的第二十周年&#xff0c;年会的主题为“低碳数字新动力 电力转型新发展”&#xff0c;紧密围绕“十四五”数据经济发展&#xff0c;“双碳”战略、新型电力系…

10分钟学会使用Jmeter工具做接口自动化测试

Jmeter接口自动化测试项目实战视频教程地址&#xff1a;https://www.bilibili.com/video/BV1e44y1X78S/? 目录&#xff1a;导读 引言 一、软件下载 二、软件安装及设置环境变量 三、Jmeter做接口自动化测试的步骤 四、接口依赖的解决 引言 大家好&#xff01;我是不二。…

《Linux基础》08. 日志管理 · 备份与恢复

Linux基础 - 08 1&#xff1a;日志管理1.1&#xff1a;系统常用日志1.2&#xff1a;日志管理1.2.1&#xff1a;日志服务1.2.2&#xff1a;配置文件1.2.3&#xff1a;自定义日志管理 1.3&#xff1a;日志轮替1.3.1&#xff1a;轮替服务1.3.2&#xff1a;配置文件1.3.3&#xff1…

顺序表(更新版)——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰又来更新新专栏啦&#xff0c;其实之前我就已经写过了顺序表的内容&#xff0c;只是之前的内容不是最新版的顺序表&#xff0c;现在&#xff0c;我来更新一下最新版的顺序表&#xff0c;下面&#xff0c;就让我们进入更新版的顺序…

开发常用的 Linux 命令1(文件和目录)

开发常用的 Linux 命令汇总1&#xff08;文件和目录&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&#xff0c;…

小项目发布:TLC_Browers--一个开源的基于vb6基于Webview2 Runtime支持html5和多标签的浏览器

项目名称:TLC浏览器(TLC_NLP机器人的附属产品) 技术架构:webview2 runtime,可参考链接WebView2 - Microsoft Edge Developer 目录介绍: kernel:控制webview2内核的代码 client:主程序代码&#xff0c;将kernel变为自己的子窗体&#xff0c; 进程通信方式:共享文件 release:正…

Jenkins 在linux安装配置

下载Jenkins 安装包 官网地址&#xff1a;https://www.jenkins.io/index.html 因为我的是centos&#xff0c;所以我选择redhat的长期支持版本 linux上执行&#xff1a; wget https://get.jenkins.io/redhat-stable/jenkins-2.222.1-1.1.noarch.rpm安装 使用rpm安装&#xf…

【Linunx报错】程序在运行时无法找到一个名为 “libctemplate.so.3“ 的共享库文件

第一个报错&#xff1a; error while loading shared libraries: libctemplate.so.3: cannot open shared object file: No such file or directory 解决方法&#xff1a; 这个错误信息提示你的程序在运行时无法找到一个名为 “libctemplate.so.3” 的共享库文件&#xff0c;因…

GAMES302等几何分析(IGA)---- 课程简介及等几何分析的介绍

文章目录 前言提纲产品数字化设计\仿真\优化全流程介绍计算机辅助设计&#xff08;CAD&#xff09;NURBS理论基础计算机辅助工程&#xff08;CAE&#xff09;什么是CAE为什么用CAECAE典型应用CAE解决问题的一般过程CAE方法体系及软件 结构优化创成式设计设计仿真类工业软件国产…

mybatis注解的详解和开发(增、删、改、查以及一对一、一对多/多对一、多对多的关系联查)

mybatis注解的基本理解和开发(增、删、改、查以及一对一、一对多/多对一、多对多的关系联查) 使用mybatis注解开发的原因&#xff1f; 注解提供了一种简单的方式来实现简单映射语句&#xff0c;而不会引入大量的开销。能够读懂别人写的代码&#xff0c;特别是框架相关的代码。…

Java——反转链表

题目链接 牛客在线oj题——反转链表 题目描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤1000 要求&#xff1…

OpenAI最新官方ChatGPT聊天插件接口《插件示例demo》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

Example plugins 插件示例demo 前言Introduction 导言Learn how to build a simple todo list plugin with no auth 了解如何构建一个简单的待办事项列表插件&#xff0c;无需授权Learn how to build a simple todo list plugin with service level auth 了解如何构建一个简单的…

【Unity VR开发】结合VRTK4.0:瞬移点

语录&#xff1a; 如果把童年再放映一遍&#xff0c;我们一定会先大笑&#xff0c;然后放声痛哭&#xff0c;最后挂着泪&#xff0c;微笑着睡去。 前言&#xff1a; 移动的限制除了设置移动区域&#xff0c;也可以使用瞬移点&#xff1a;Locomotors.TeleportTargets.Point。 正…

HQChart报价列表高级应用教程7-创建走势图列

HQChart报价列表高级应用教程7-创建走势图列 走势图列效果图步骤1. 走势图列数据截图数据结构HQChart代码地址走势图列 在行情报价里面,使用单独的一列显示每一个股票的价格走势的缩略图。 效果图 步骤 1. 走势图列 REPORT_COLUMN_ID.CLOSE_LINE_ID 走势图列在创建报价列…

ChatGPT: 人工智能对话模型的前沿技术与应用探析

ChatGPT: 人工智能对话模型的前沿技术与应用探析 引言 ChatGPT作为一种人工智能对话模型&#xff0c;在近年来引起了广泛的关注和研究。随着人工智能技术的不断发展&#xff0c;ChatGPT作为一种前沿技术在人机对话领域具有重要地位和广泛的应用价值。本文将介绍ChatGPT的背景和…

【CocosCreator入门】CocosCreator组件 | ProgressBar(进度条)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中的ProgressBar组件是一种用于实现进度条效果的重要组件。它可以让我们在游戏中展示各种进度条效果&#xff0c;例如加载进度条、血条等。 目录 一、组件介绍 二、组件属性 三、脚本…

如何删除docker镜像与容器

目录 删除示例&#xff1a; 1.查看docker中要删除的镜像 2.删除镜像&#xff0c;使用命令“docker rmi image id” 3.查看docker中正在运行的容器 4.停止容器 5.删除容器 6.查看容器 7.删除镜像 8.最后查看所有镜像 删除示例&#xff1a; 1.查看docker中要删除的镜像 …

(二)Jhipster 快速搭建微服务

&#xff08;一&#xff09;Jhipster 的简介与安装https://blog.csdn.net/weixin_46085718/article/details/130282249 目录 &#xff08;一&#xff09;Jhipster 的简介与安装 1、搭建注册中心 jhipster registry jhipster registry是一个基于spring cloud的配置中心。所有…

跟寻智能色选机,一起探索神秘的色彩世界

色选机&#xff0c;一种基于物料颜色、形状或质地差异&#xff0c;再通过光电检测、图像处理等手段来实现物料分选和净化的工业化应用终端&#xff0c;可满足特种物料等多种产品的色选要求&#xff0c;如大米、茶叶、豆类、药材、种子、虾皮、坚果、各类干货、塑料、珠宝、矿石…