当前位置:网站首页>【二叉树】删点成林
【二叉树】删点成林
2022-07-07 10:30:00 【豪冷啊】
0x00 题目
给出二叉树的根节点 root
树上每个节点都有一个不同的值
如果节点值在 to_delete
中出现
我们就把该节点从树上删去
最后得到一个森林(一些不相交的树构成的集合)
返回森林中的每棵树
你可以按任意顺序组织答案
0x01 思路
某个节点需要删除
时
需要判断它的左右
节点是否为空
不为空则添加
到结果数组中
然后返回一个空节点
(nil) 给上层
上层直接替换即可
所以,按照这个思路
使用后序
遍历方式即可
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 delNodes(_ root: TreeNode?, _ to_delete: [Int]) -> [TreeNode?] {
var res: [TreeNode?] = []
func del(_ root: TreeNode?, _ to_delete: [Int]) -> TreeNode? {
guard let root = root else { return nil }
// 分别去左右子树进行删除操作
let left = del(root.left, to_delete)
let right = del(root.right, to_delete)
// 更新左右子树
root.left = left
root.right = right
// 节点需要删除
if to_delete.contains(root.val) {
if left != nil {
res.append(left)
}
if right != nil {
res.append(right)
}
return nil
}
return root
}
// 根节点是否需要删除?
let r = del(root, to_delete)
if r != nil {
res.append(r)
}
return res
}
0x03 我的小作品
欢迎体验我的作品之一:小编辑器-XCompiler
在线编辑器,包含多种语言App Store
搜索即可~
边栏推荐
- 数据库系统原理与应用教程(011)—— 关系数据库
- Static routing assignment of network reachable and telent connections
- Attack and defense world - PWN learning notes
- Unity 贴图自动匹配材质工具 贴图自动添加到材质球工具 材质球匹配贴图工具 Substance Painter制作的贴图自动匹配材质球工具
- sql-lab (54-65)
- Idea 2021 Chinese garbled code
- 111. Network security penetration test - [privilege escalation 9] - [windows 2008 R2 kernel overflow privilege escalation]
- Vxlan 静态集中网关
- Sort out the garbage collection of JVM, and don't involve high-quality things such as performance tuning for the time being
- IPv6 experiment
猜你喜欢
Up meta - Web3.0 world innovative meta universe financial agreement
Idea 2021 Chinese garbled code
leetcode刷题:二叉树27(删除二叉搜索树中的节点)
Epp+dis learning path (1) -- Hello world!
OSPF exercise Report
Hi3516全系统类型烧录教程
<No. 9> 1805. Number of different integers in the string (simple)
@Bean与@Component用在同一个类上,会怎么样?
Completion report of communication software development and Application
Epp+dis learning road (2) -- blink! twinkle!
随机推荐
zero-shot, one-shot和few-shot
【统计学习方法】学习笔记——支持向量机(上)
Introduction to three methods of anti red domain name generation
30. Few-shot Named Entity Recognition with Self-describing Networks 阅读笔记
(to be deleted later) yyds, paid academic resources, please keep a low profile!
关于 Web Content-Security-Policy Directive 通过 meta 元素指定的一些测试用例
Routing strategy of multi-point republication [Huawei]
Completion report of communication software development and Application
Dialogue with Wang Wenyu, co-founder of ppio: integrate edge computing resources and explore more audio and video service scenarios
Problem: the string and characters are typed successively, and the results conflict
浅谈估值模型 (二): PE指标II——PE Band
金融数据获取(三)当爬虫遇上要鼠标滚轮滚动才会刷新数据的网页(保姆级教程)
Cenos openssh upgrade to version 8.4
SQL lab 11~20 summary (subsequent continuous update) contains the solution that Firefox can't catch local packages after 18 levels
消息队列消息丢失和消息重复发送的处理策略
Tutorial on principles and applications of database system (009) -- conceptual model and data model
What are the top-level domain names? How is it classified?
数据库系统原理与应用教程(007)—— 数据库相关概念
利用栈来实现二进制转化为十进制
SQL head injection -- injection principle and essence