深度优先遍历--最大路径和
时间:2022-07-23
本文章向大家介绍深度优先遍历--最大路径和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先是树的建立
class TreeNode:
def __init__(self,x,left=None,right=None):
self.val=x
self.left=left
self.right=right
t3=TreeNode(10);t4=TreeNode(12)
t5=TreeNode(2);t6=TreeNode(1)
t1=TreeNode(2,t3,t4);t2=TreeNode(-2,t5,t6)
root=TreeNode(1,t1,t2)
树如图所示:
对于每一个节点而言,都有一个停值和不停值,当前节点的停值=max(左孩子停值,左孩子不停值,右孩子停值,右孩子不停值,左孩子不停值+右孩子不停值+当前节点的值);
当前节点的不停值=max(左孩子不停值+当前节点值,右孩子不停值+当前节点值,当前节点值)
def maxpathsum(root):
return max(helper(root))
def helper(root):
if root == None:
#如果是空,那么返回无穷小,这样叶子节点才会有相应的值
return float("-inf"),float("-inf")
leftno,leftstop=helper(root.left)
rightno,rightstop=helper(root.right)
nostop=max(leftno+root.val,rightno+root.val,root.val)
stop=max(leftno,leftstop,rightno,rightstop,leftno+rightno
+root.val)
return nostop,stop
注意:我们利用深度优先搜索一直到叶子节点,然后从下至上依此获取每个节点的停值和不停值。
- Apache Storm内部原理分析
- 使用lrucache和diskLrucache实现照片墙
- android 减少图片出现oom错误
- android分包方案
- 系统负载能力浅析
- 微软正式发布了Microsoft.Bcl.Async
- parcel和parcelable
- Windows Phone 7 WebBrowser 中文乱码问题
- Java并发包类总览
- 作业调度框架 Quartz.NET 2.0 beta 发布
- 系统捕获异常并发送到服务器
- 当调用GetAuthorizationGroups() 的错误-“试图访问卸载的应用程序域“(Exception from HRESULT: 0x80131014)解决方案
- WCF 4.0路由服务Routing Service
- ExpandableListView简单应用及listview模拟ExpandableListView
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 自己动手编写一个Mybatis插件:mybatis脱敏插件
- 【每日一题】36. Valid Sudoku
- 【网易云课堂】Java语言程序设计进阶----第一周编程作业
- 11 Confluent_Kafka权威指南 第十一章:流计算
- 简直骚操作,ThreadLocal还能当缓存用
- 品优购(IDEA版)-第一天
- 品优购(IDEA版)-第二天
- 品优购第四天
- 深度学习框架OneFlow的并行特色(附框架源码和教程)
- 图解Java设计模式
- python 如何解决 No module named ‘pip‘问题
- 用多智能体强化学习算法MADDPG解决"老鹰捉小鸡"问题
- 网站日志实时分析之Flink处理实时热门和PVUV统计
- 大数据量下的集合过滤—Bloom Filter
- 实时数仓链路分享:kafka =>SparkStreaming=>kudu集成kerberos