深度优先搜索与动态规划|543, 124, 687

深度优先搜索与动态规划|543. 二叉树的直径,124. 二叉树中的最大路径和,687. 最长同值路径

  • 二叉树的直径
  • 二叉树中的最大路径和
  • 最长同值路径

二叉树的直径

好久没写二叉树了,主要还是看遍历的顺序是什么样的。

# 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 diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:def dfs(root):nonlocal resif not root:return 0left = dfs(root.left)right = dfs(root.right)res = max(left + right,res)return max(left,right) + 1res = 0dfs(root)return res

二叉树中的最大路径和

在这里插入图片描述

这个有点绕不出来。绕一遍,
root -10 进去,root.left是root 9,root.right是root 20
root 9 进去得到的return是9,res更新得到9
root 20进去,root.left是root 15,root.right是root 7
root 15进去得到的return是15,res更新得到15
root 7进去得到的return是7,res不跟新还是15
然后返回root 20,res会更新为20+15+9是42,但是这里的return是35(因为只能选一条路,走左边了就不能走右边,而这里左边比较大所以选左边)。
人后回root -10,res不更新,最后得到的答案就是42。

这里的return比较难想因为会忘记是一条路,不会回来的。

class Solution:def maxPathSum(self, root: Optional[TreeNode]) -> int:def dfs(root):nonlocal resif not root:return 0left = max(dfs(root.left),0)right = max(dfs(root.right),0)max_dis = left+right+root.valres = max(res,max_dis)return root.val + max(left,right)res = -infdfs(root)return res

最长同值路径

还是看错了!!是最长的路径,不是有几个一样的node连着,所以岔路了还要继续往上就可以选一条走了!!

class Solution:def longestUnivaluePath(self, root: Optional[TreeNode]) -> int:def dfs(root):nonlocal resif not root:return 0if not root.left and not root.right:return 0left = dfs(root.left)right = dfs(root.right)if root.left and root.val == root.left.val:left += 1else:left = 0if root.right and root.val == root.right.val:right += 1else:right = 0res = max(left+right,res)return max(left,right)res = 0dfs(root)return res

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

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

相关文章

桥接模式-java实现

桥接模式 桥接模式的本质,是解决一个基类,存在多个扩展维度的的问题。 比如一个图形基类,从颜色方面扩展和从形状上扩展,我们都需要这两个维度进行扩展,这就意味着,我们需要创建一个图形子类的同时&#x…

linux内网穿透应用场景有哪些?快解析有什么用处?

随着网络技术的不断发展,无论是工作上还是在生活中人们对网络的依赖和需求越来越高。Linux内网穿透作为一种创新的解决方案,为我们提供了无限可能。 首先我们了解一下Linux操作系统。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基…

oracle sql developer批量删除某个用户

随着navicate收费,还得破解,pl/sql developer配置麻烦,最近使用oracle sql developer来试试oracle的操作如何; 用着还行,没有卡顿现象, 最近要oracle sql developer批量删除某个用户下所有的表&#xff0…

基于 CentOS 7 构建 LVS-DR 群集

LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。 然后Director使用相同的VIP目的IP地址将 请求发送到集群节点或真实服务器。 然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(…

如何测试Linux磁盘的读写速度

在Linux系统中也有很多命令可以测试硬盘的读写速度指标。以下是几个常用命令(注意:在执行测试命令之前,请务必备份数据以避免数据丢失! 1、dd 命令 首先挂载磁盘 mount /dev/sdb /testdd 命令可用于进行硬盘读写速度测试。 例…

Linux6.36 Kubernetes Pod进阶

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes Pod进阶一、资源限制1.CPU 资源单位2.内存 资源单位3.重启策略(restartPolicy)4.健康检查:又称为探针(Probe)5.启动、退出动作 计算机系统 5G云计算 第三章 LIN…

任务14、无缝衔接,MidJourney瓷砖(Tile)参数制作精良贴图

14.1 任务概述 在这个实验任务中,我们将深入探索《Midjourney Ai绘画》中的Tile技术和其在艺术创作中的具有挑战性的应用。此任务将通过理论学习与实践操作相结合的方式,让参与者更好地理解Tile的核心概念,熟练掌握如何在Midjourney平台上使用Tile参数,并实际运用到AI绘画…

Docker搭建zookeeper

问题背景 前言 本文参考自:docker-compose快速搭建Zookeeper集群,熬到凌晨三点多验证部署成功,网上有很多文章已经无法正确部署了,因为有些东西版本升级了,版本跟不上就会报错还有一种更加详细更加全面的部署方式&…

SAS-数据集SQL垂直(纵向)合并

一、SQL垂直合并的基本语法 一个selectt对应一个表,select之间用set-operator连接,set-operator包括:except(期望)、intersect(相交)、union(合并),outer un…

【原创】基于JavaWeb的婚礼策划平台

主要功能介绍:系统基于Java语言开发。整个程序属于B/S架构应用。在开发的时候,将婚礼策划中主要的业务如:婚纱摄影预约以及婚纱租赁等作为主要的目标和研究方向。婚礼策划平台系统从整体结构设计上,由网站前台和系统后台组成。网站…

比特鹏哥5-数组【自用笔记】

比特鹏哥5-数组【自用笔记】 1.数组的概念2.一维数组的创建和初始化创建的语句结构初始化的语句结构 3.一维数组的使用数组的下标:从0开始,n个数组,最后一个的下标是n-1 4.一维数组在内存中的存储5.sizeof计算数组元素个数可以计算元素个数并…

双周赛110(模拟、枚举+哈希表)

文章目录 双周赛110[2806. 取整购买后的账户余额](https://leetcode.cn/problems/account-balance-after-rounded-purchase/)模拟 [2807. 在链表中插入最大公约数](https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/)模拟 [2808. 使循环数组所有元…

C++如何改变文字的颜色(不同字显示不同颜色)

许多同学们在制作c游戏的时候只有黑白两种颜色。就像si人了一样 非常影响视觉效果,显得十分不好看,因此,我决定发一个改变文字颜色的文章! 下面介绍方法: 在了解程序之前,首先好了解光的三原色已经三原色…

GODOT游戏引擎简介,包含与unity性能对比测试,以及选型建议

GODOT,是一个免费开源的3D引擎。本文以unity作对比,简述两者区别和选型建议。由于是很久以前写的ppt,技术原因视频和部分章节丢失了。建议当做业务参考。 GODOT目前为止遇到3个比较重大的基于,第一个是oprea的合作奖,…

CommStudio for .NET Crack

CommStudio for .NET Crack CommStudio for.NET使您的应用程序可以轻松地使用串行端口和调制解调器进行通信。CommStudio for.NET是一套全面的组件和可视化调试工具,可将远程系统和设备与visual Studio 2005和visual Studio 2008集成。开发与遗留系统和外部设备集成…

清风数学建模——插值算法

插值法 文章目录 插值法作用定义概念一维插值问题一维插值多项式原理定理 拉格朗日插值法和牛顿插值法埃尔米特插值分段线性插值分段三次埃尔米特插值法代码三次样条插值及其代码例子n维数据的插值(了解) 作用 数模比赛中,常常需要根据已知的…

Git从远程仓库中删除文件,并上传新文件

目录 删除: 拉取远程分支的更新: ​编辑 首先查看git状态: ​编辑 删除文件并提交版本库: 提交: 上传新文件: 首先查看git状态: 提交到暂存区: 提交到版本库: 上…

【分布式系统】前言

争取写一下阅读笔记,更新有关分布式系统的一切,先开个坑。 现在的心得如下: 不知道啥时候能破解哈~~ 内容包括部分6.824 读的论文 DDIA: DDIA mapreduce GFS VMwareFT Raft zookeeper chain replication…

聊聊springcloud如何与k8s configMap整合实现配置动态刷新

前言 配置中心在微服务的服务治理场景基本上是属于标配,常见可以用来做配置中心有nacos、apollo、zookeeper、springcloud config、consul、etcd、redis、disconf、dimond、xxl-conf等。这些组件的特点都是需要安装,如果大家的部署环境中有用到k8s&…

【沁恒蓝牙mesh】CH58x USB功能开发记录(三)

本博文主要记录 ,【沁恒蓝牙mesh】CH58x USB功能开发记录(三),数据收发基于寄存器级别解释 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页&#xf…