当前位置:网站首页>【二叉树】根到叶路径上的不足节点
【二叉树】根到叶路径上的不足节点
2022-07-05 16:40:00 【豪冷啊】
0x00 题目
给定一棵二叉树的根 root
考虑它所有从根
到任何叶
路径
假如通过节点 node
的每种可能的 “根-叶”
路径上值的总和
全都小
于给定的 limit
则该节点被称之为不足节点
,需要被删除
请你删除所有不足节点,并返回生成的二叉树的根
0x01 思路
因为要计算从根到叶
的总和
所以使用深度
优先的遍历算法
节点 node
被删除的条件是sum + node.val < limit
sum
为路径上 node
前面所有节点的和
反过来讲
每经过一个节点,可以更新 limit
limit - node.val
当 node.val < limit
时
就要被删除
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 sufficientSubset(_ root: TreeNode?, _ limit: Int) -> TreeNode? {
guard let root = root else { return nil }
let left = root.left
let right = root.right
// 到达叶子节点
if left == nil && right == nil {
return root.val >= limit ? root : nil
}
// 经过一个节点,减小
let res = limit - root.val
if left != nil {
root.left = sufficientSubset(left, res)
}
if right != nil {
root.right = sufficientSubset(right, res)
}
// 更新左右节点后,都为空
// 说明以当前节点为根,到叶子节点的路径总和 小于 limit
// 所以当前节点也要被删除
if root.left == nil && root.right == nil {
return nil
}
return root
}
0x03 我的作品
欢迎体验我的作品之一:小五笔 86 版
五笔学习好帮手App Store
搜索即可~
边栏推荐
- C language to get program running time
- Browser rendering principle and rearrangement and redrawing
- Timestamp strtotime the day before or after the date
- CMake教程Step6(添加自定义命令和生成文件)
- Practical example of propeller easydl: automatic scratch recognition of industrial parts
- 微信公众号网页授权登录实现起来如此简单
- First day of learning C language
- 挖财股票开户安全吗?怎么开股票账户是安全?
- [first lecture on robot coordinate system]
- 采用药丸屏的iPhone14或引发中国消费者的热烈抢购
猜你喜欢
飞桨EasyDL实操范例:工业零件划痕自动识别
IDC报告:腾讯云数据库稳居关系型数据库市场TOP 2!
Jarvis OJ Telnet Protocol
American chips are no longer proud, and Chinese chips have successfully won the first place in emerging fields
【机器人坐标系第一讲】
ternary operator
国产芯片产业链两条路齐头并进,ASML真慌了而大举加大合作力度
thinkphp模板的使用
深耕5G,芯讯通持续推动5G应用百花齐放
深潜Kotlin协程(二十一):Flow 生命周期函数
随机推荐
Deeply cultivate 5g, and smart core continues to promote 5g applications
Games101 notes (I)
flask解决CORS ERR 问题
Games101 notes (II)
張平安:加快雲上數字創新,共建產業智慧生態
Data verification before and after JSON to map -- custom UDF
【剑指 Offer】61. 扑克牌中的顺子
一个满分的项目文档是如何书写的|得物技术
CMake教程Step6(添加自定义命令和生成文件)
Embedded UC (UNIX System Advanced Programming) -2
Games101 notes (III)
[Web attack and Defense] WAF detection technology map
外盘期货平台如何辨别正规安全?
dried food! Semi supervised pre training dialogue model space
Excuse me, is the redis syntax used in DMS based on the commands of the redis community version of the cloud database
What is ROM
IDC报告:腾讯云数据库稳居关系型数据库市场TOP 2!
Browser rendering principle and rearrangement and redrawing
American chips are no longer proud, and Chinese chips have successfully won the first place in emerging fields
【7.7直播预告】《SaaS云原生应用典型架构》大咖讲师教你轻松构建云原生SaaS化应用,难题一一击破,更有华为周边好礼等你领!