当前位置: 首页 > news >正文

1373. 二叉搜索子树的最大键值和

Problem: 1373. 二叉搜索子树的最大键值和

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

解决这个问题的关键在于采用深度优先搜索(DFS)策略,并结合树形动态规划的思想。我们需要设计一个递归函数,它不仅能够遍历整棵树,还能收集到每个子树是否为BST的信息、该子树的最大值、最小值、总和以及最重要的是,以该节点为根的BST所能得到的最大键值和。

解题方法

我提出的解题方法是通过定义一个辅助类Info,用来存储递归过程中需要传递的五个关键信息:当前子树的最大值、最小值、作为BST时的最大键值和、子树的总和以及该子树是否为BST的布尔标记。递归函数f(TreeNode x)负责计算以x为根的子树的各种信息,并返回一个Info对象。

复杂度

时间复杂度:

O ( n ) O(n) O(n),每个节点被访问一次,其中n是树中的节点数。

空间复杂度:

O ( n ) O(n) O(n),递归调用栈的深度在最坏情况下会达到树的高度,即n(对于极端不平衡的树),但平均情况下要小得多。

Code

/*** 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 class Info{public int max;public int min;public int maxBstSum;public int sum;public boolean isBst;public Info(int max, int min, int maxBstSum, int sum, boolean isBst) {this.max = max;this.min = min;this.maxBstSum = maxBstSum;this.sum = sum;this.isBst = isBst;}}public int maxSumBST(TreeNode root) {return f(root).maxBstSum;}public Info f(TreeNode x) {if(x == null) {return new Info(Integer.MIN_VALUE, Integer.MAX_VALUE, 0, 0, true);}Info infol = f(x.left);Info infor = f(x.right);int max = Math.max(x.val, Math.max(infol.max, infor.max));int min = Math.min(x.val, Math.min(infol.min, infor.min));int sum = infol.sum + infor.sum +x.val;boolean isBst = infol.isBst && infor.isBst && infol.max < x.val && x.val < infor.min;int maxBstSum = Math.max(infol.maxBstSum, infor.maxBstSum);if(isBst) {maxBstSum = Math.max(maxBstSum, sum);}return new Info(max, min, maxBstSum, sum, isBst);}
}

相关文章:

1373. 二叉搜索子树的最大键值和

Problem: 1373. 二叉搜索子树的最大键值和 文章目录 思路解题方法复杂度Code 思路 解决这个问题的关键在于采用深度优先搜索&#xff08;DFS&#xff09;策略&#xff0c;并结合树形动态规划的思想。我们需要设计一个递归函数&#xff0c;它不仅能够遍历整棵树&#xff0c;还能…...

基于java + Springboot 的二手物品交易平台实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统架构 &#x1f4da; 数据库设计 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 登录模块 首页模块 二手商品轮播图添加 &#x1f4ac; 后台功能模块 二手商品商品列表 添加二手商品商品 添加购物车 &a…...

Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!

电商圈有句话叫&#xff1a;七分靠选品&#xff0c;三分靠运营&#xff0c;选品对了&#xff0c;事半功倍&#xff0c;选品错了&#xff0c;功亏一篑&#xff01; 很多卖家都会为选品发愁&#xff0c;特别对于Shopee本土店卖家来说&#xff0c;要囤货到海外仓&#xff0c;如果…...

3D在线展览馆的独特魅力,技术如何重塑展览业的未来?

在数字化和虚拟现实技术迅猛发展的今天&#xff0c;3D在线展览馆已经成为一种颇具前景的创新形式。搭建3D在线展览馆不仅能够突破传统展览的时空限制&#xff0c;还能为参观者提供身临其境的体验&#xff0c;极大地提升展示效果和用户互动。 一、3D在线展览馆的意义 1、突破时空…...

基于SpringBoot的藏区特产销售平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBoot框架 工具&#xff1a; MyEclipse 系统展示 首页 个人中心 特产信息管理 订单管…...

hudi系列-schema evolution(一)

hudi+flink在非schema on read模式下也表现出了支持一部分的schema evolution功能,本篇中测试一下在非schema on read模式下,发生各种列变更情况时数据写入与读取情况。 flink 1.14.5hudi 0.13.1mor表思路: 选择mor表是因为它的数据文件有avro和parquet两种格式,能覆盖得更…...

Redis-实战篇-缓存雪崩

文章目录 1、缓存雪崩2、解决方案&#xff1a; 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 2、解决方案&#xff1a; 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…...

线性代数|机器学习-P18快速下降奇异值

文章目录 1. 为什么要低秩矩阵1.1 矩阵A的秩定义1.2 矩阵压缩PCA 2. 低秩矩阵图像处理3. 秩的相关性质3.1 秩的公差轴表示3.2 Eckart-Young 定理 4. 低秩矩阵4.1 低秩矩阵描述4.2 函数低秩矩阵形式4.3通项小结4.4 函数采样拟合 5. 西尔维斯特方程5.1 希尔伯特矩阵举例5.2 范德蒙…...

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…...

【代码随想录】【算法训练营】【第51天】 [115]不同的子序列 [583]两个字符串的删除操作 [72]编辑距离

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 51&#xff0c;周四&#xff0c;又是不能坚持的一天~ 题目详情 [115] 不同的子序列 题目描述 115 不同的子序列 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 …...

24下半年软考集合!30s打破信息差!

01软考是什么&#xff1f; 软考&#xff0c;全称为计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;也称为计算机资格考试&#xff0c;是由国家人力资源和社会保障部、工业和信息化部领导的国家级考试。它既是国家级资格证书&#xff0c;又是职称资…...

如何在Xcode中设置库路径

在Xcode中设置库路径的过程可以分为以下几个步骤&#xff0c;下面将结合参考文章中的信息&#xff0c;以清晰、分点表示和归纳的方式给出指导&#xff1a; 1. 确定库的类型和来源 动态库&#xff08;.dylib或.framework&#xff09;或静态库&#xff08;.a&#xff09;&#…...

小程序的基本使用

【 0 】前言 【 0 】 这个就是js代码的存放地方 app.json // pages/banner/banner.js Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示…...

[保姆级教程]uniapp设置字体引入字体格式

文章目录 在 UniApp 中设置和引入自定义字体&#xff08;如 .ttf、.woff、.woff2 等格式&#xff09;通常涉及几个步骤。 准备字体文件&#xff1a; 首先&#xff0c;你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体&#xff0c;并遵守…...

【Webpack】前端工程化之Webpack与模块化开发

目 录 前言模块化开发Stage1 - 文件划分方式Stage2 - 命名空间方式Stage3 - IIFE&#xff08;立即调用函数表达式&#xff09;Stage 4 - IIFE 依赖参数模块化的标准规范 使用Webpack实现模块化打包安装WebpackWebpack基本配置Webpack构建流程Webpack热更新Webpack打包优化 前言…...

【Android】记录在自己的AMD处理器无法使用Android studio 虚拟机处理过程

文章目录 问题&#xff1a;无法在AMD平台打开Android studio 虚拟机&#xff0c;已解决平台&#xff1a;AMD 5700g系统&#xff1a;win10专业版1、在 amd平台上使用安卓虚拟机需要安装硬件加速器2、关闭win10上的系统服务 问题&#xff1a;无法在AMD平台打开Android studio 虚拟…...

LearnOpenGL - Android OpenGL ES 3.0 使用 FBO 进行离屏渲染

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…...

人工智能虚拟仿真系统,解决算法难、编程难、应用场景难三大难题

近年来&#xff0c;人工智能技术迅猛发展&#xff0c;广泛渗透至各行业&#xff0c;市场份额持续扩大&#xff0c;预示着智能化转型的广阔前景。该行业本质上属于知识高度密集型&#xff0c;近年来的迅猛发展进一步加剧了对专业人才的迫切需求。 然而&#xff0c;我国目前在人工…...

CTE(公共表表达式)和视图在查询时的性能影响

在SQL查询优化和数据库设计中&#xff0c;CTE&#xff08;公共表表达式&#xff09;和视图都是常用的工具。尽管它们在功能和使用场景上有很多相似之处&#xff0c;但在查询性能方面可能存在显著差异。本文将探讨CTE和视图在查询时的性能影响&#xff0c;帮助您在实际项目中做出…...

新能源行业必会基础知识-----电力市场概论笔记-----绪论

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 电力市场的定义2. 对传统电力系统理论的挑战 1. 电力市场的定义 1. 我国电力市场的进程 我国新一轮电力体制改革的5大亮点&…...

003 SpringBoot操作ElasticSearch7.x

文章目录 5.SpringBoot集成ElasticSearch7.x1.添加依赖2.yml配置3.创建文档对象4.继承ElasticsearchRepository5.注入ElasticsearchRestTemplate 6.SpringBoot操作ElasticSearch1.ElasticsearchRestTemplate索引操作2.ElasticsearchRepository文档操作3.ElasticsearchRestTempl…...

npm install报错Maximum call stack size exceeded

npm 报错 方案&#xff1a; npm cache clean --force npm install...

第1章 基础知识

第1章 基础知识 1.1 机器语言 机器语言就是机器指令的集合&#xff0c;机器指令展开来讲就是一台机器可以正确执行的命令 1.2 汇编语言的产生 汇编语言的主题是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上&#xff0c;汇编指令是机器指令便于记忆的书写格式。…...

python脚本 限制 外部访问 linux服务器端口

注意&#xff1a;该脚本会清空linux防火墙的filter表的规则和用户自定义链路 脚本的效果是将端口限制为仅服务器内部访问 可以提供ip地址白名单 具体脚本&#xff1a; #!/usr/bin/python3 import argparse, subprocess, sys, redef popen(cmd):global resulttry:result su…...

Redis-哨兵模式-主机宕机-推选新主机的过程

文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…...

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发 码客 卢益贵 ygluu 关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…...

每日一练 - OSPF 组播地址

01 真题题目 判断以下陈述是否正确&#xff1a; 224.0.0.6 是 ALL DRouters 监听地址 224.0.0.5 是 ALL SPFRouters 监听地址 A.正确 B.错误 02 真题答案 A 03 答案解析 在OSPF (Open Shortest Path First) 路由协议中&#xff0c;为了实现高效的信息交换和发现邻居&#x…...

AMHS工程师的培养

一、岗位职责主要包括: 1. 负责生产现场设备运行维护及异常处理,确保设备安全操作与保养。 2. 制定并实施AMHS计划和措施,对过程问题进行追踪解决。 3. 监控生产过程中的不良品率,确保生产过程的稳定性。 4. 建立AMHS标准作业程序文件,并定期更新和维护。 5. 负责AMHS…...

如何在前端项目中制定代码注释规范

本文是前端代码规范系列文章&#xff0c;将涵盖前端领域各方面规范整理&#xff0c;其他完整文章可前往主页查阅~ 开始之前&#xff0c;介绍一下​最近很火的开源技术&#xff0c;低代码。 作为一种软件开发技术逐渐进入了人们的视角里&#xff0c;它利用自身独特的优势占领市…...

一位苹果手机硬件工程师繁忙的一天

早晨&#xff1a;迎接新的一天 7:00 AM - 起床 早晨七点准时起床。洗漱、吃早餐后&#xff0c;查看手机上的邮件和消息&#xff0c;以便提前了解今天的工作安排和优先事项。 7:30 AM - 前往公司 开车前往位于加州库比蒂诺的苹果总部。在车上习惯性地听一些与电子工程相关的播…...

武汉网站建设_网页设计_网站制作_网站建设公司_做企业网站公司/如何自己建个网站

“积极思维”更像是一个为完美人士所设计的梦幻。而“消极思维”则为那些内心尚不完美&#xff0c;还存在种种心理缺陷的人提供安全感和情感支持。 消极思维有时候会发挥出相当正面的力量 人们在生活里&#xff0c;总是会鼓励那些失去希望的人们&#xff1a;要想开点儿&#xf…...

网站流量如何赚钱/刷百度关键词排名优化

1、引用和指针的区别&#xff1a;引用是别名。必须和具体的对象绑定&#xff0c;在声明的时候初始化&#xff0c;以后不能改变绑定关系&#xff1b;引用不能声明为null类型&#xff1b;指针是一种变量&#xff0c;它的值为地址&#xff0c;在使用的时候可以改变&#xff0c;也可…...

网站 绝对路径/百度点击快速排名

What happened 在开发的时候&#xff0c;遇到一个问题&#xff1a; 项目代码是在python3的环境下写的&#xff0c;但是&#xff0c;在终端中使用 flask run 运行项目时&#xff0c;使用的却是python2环境&#xff0c;导致很多包需要重新安装&#xff0c;甚至有些包安装不了。…...

衡水做网站服务商/关键词app下载

Fiddler是位于客户端和服务器端HTTP代理&#xff0c;可以监控所有的http和https。浏览器访问网站都是基于B/S架构的&#xff0c;这个时候我们连接上fiddler&#xff0c;所有服务器发送到浏览器的资源都会被我们截获。fiddler的方法如下。 如何将请求报文保存到本地&#xff1f;…...

关于做旅游网站的参考文献/建立网站一般要多少钱

序曲出塞二首 其一【唐】 秦时明月汉时关&#xff0c;万里长征人未还。但使龙城飞将在&#xff0c;不教胡马度阴山。这是一首边塞诗&#xff0c;昌龄从描写景物景入手&#xff0c;首句勾勒出一幅冷月照边关的苍凉景象。"秦时明月汉时关"暗示了这里的战事自秦汉以来一…...

网站建设常用的开发语言介绍/今天的特大新闻有哪些

2019独角兽企业重金招聘Python工程师标准>>> SCRUM团队的三个角色 Scrum团队中包括三个角色&#xff0c;他们分别是产品负责人、开发团队和 Scrum Master。 Scrum 团队是自组织、跨职能的完整团队。自组织团队决定如何最好地完成他们的工作,而不是由团队外的其他人来…...