当前位置:网站首页>【二叉树】分裂二叉树的最大乘积
【二叉树】分裂二叉树的最大乘积
2022-07-20 20:41:00 【豪冷啊】
0x00 题目
给你一棵二叉树,它的根为 root
请你删除 1
条边,使二叉树分裂成两棵子树
且它们子树和
的乘积
尽可能大
由于答案可能会很大
请你将结果对 10^9 + 7
取模后再返回
0x01 思路
因为要把树分成 2
部分
假设分割后第一棵树的和为 S
则剩下部分的和为整体的和 减去
S
所以需要先求出整棵树的和 T
因为不知道第一棵树以哪个节点为根合适
所以任何节点都需要遍历
到
使得 S * (T - S)
最大
同时记录最大
值
0x02 解法
语言:Swift
树节点:TreeNode
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
解法:
func maxProduct(_ root: TreeNode?) -> Int {
// 结果
var res: Int = Int.min
// 总和
var allSum: Int = 0
// 第一部分子树和
var nodeSum: Int = 0
// 求总和
func sum(_ root: TreeNode?) -> Int {
guard let r = root else { return 0 }
return r.val + sum(r.left) + sum(r.right)
}
// 递归求子树和
func dfs(_ root: TreeNode?) -> Int {
guard let r = root else { return 0 }
// 子树和
nodeSum = r.val + dfs(r.left) + dfs(r.right)
// 计算最大值
res = max(res, (allSum - nodeSum) * nodeSum)
return nodeSum
}
allSum = sum(root)
_ = dfs(root)
res = res % (Int(1e9) + 7)
return res
}
0x03 我的小作品
欢迎体验我的作品之一:小笔记-XNote
笔记好帮手~
一步到位App Store
搜索即可~
边栏推荐
- Audience analysis and uninstall analysis have been comprehensively upgraded, and HMS core analysis service version 6.6.0 has been updated
- Hutoo --- 日期时间工具-DateUtil
- leetcode:42. 接雨水
- Kingbasees database administrator's Guide -- 18 database job scheduling
- 魑魅魍魎
- Contract development using rust on Solana
- SAP 电商云 Spartacus UI Store 相关的设计明细
- 从去IOE到CIPU,中国云计算要走出自己的路径
- 当删则删,这种电容本不该出现
- Win64 驱动内核编程-30.枚举与删除线程回调
猜你喜欢
随机推荐
Supermarket order management system based on SSM framework +mysql [source code + document +ppt]
Yunna Xianning communication machine room dynamic loop monitoring system, telecom dynamic loop monitoring system
Intel汇编语言程序设计学习-第五章 过程-上
NPM and package
Hangzhou dynamic environment monitoring system supplier, dynamic environment monitoring equipment
王炸动力 创富快人一步!祥菱大熊猫2.0动力产品正式上市
SQL statement
Full stack development practice | complete tutorial of SSM framework integration
Yunna | dynamic environment monitoring system inspection, general introduction to the functions of the dynamic environment monitoring system
Introduction and use of jsr303
Advanced Mathematics (Seventh Edition) Tongji University exercises 3-1 personal solutions
算术运算符2(阁瑞钛伦特软件-九耶实训)
7.19模拟赛总结
【CVA估值训练营】读懂上市公司年报_第二讲
Mysql的主键UUID、自增ID、雪花算法到底该怎么选择?(荣耀典藏版)
虚拟机内核参数永久生效配置
互联网行业的中年危机是35岁这分水岭
金仓数据库KingbaseES数据库管理员指南--15.2. 管理序列
乱用“端接”,信号扑街
When a PCB designer meets love, guess how much the impedance in his board changes