当前位置: 首页 > news >正文

leetcode 1110. 删点成林

给出二叉树的根节点 root,树上每个节点都有一个不同的值。

如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。

返回森林中的每棵树。你可以按任意顺序组织答案。

示例 1:

输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]
输出:[[1,2,null,4],[6],[7]]
示例 2:

输入:root = [1,2,4,null,3], to_delete = [3]
输出:[[1,2,4]]

leetcode链接:https://leetcode.cn/problems/delete-nodes-and-return-forest

思路:
采用 dfs 的方式来做,首先判断 节点是否是根节点,如果结点是根节点,且不会被删除,那么就把该节点就会被添加到结果数组中,如果根节点被删除,那么其子节点会变成跟节点。

# 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 __init__(self):self.res = []def delNode(self, root, to_delete_dict, is_root):if root == None:return Noneis_del = root.val in to_delete_dict### 如果 root 节点被删除, 那么其左右子节点都是根节点root.left = self.delNode(root.left, to_delete_dict, is_del)root.right = self.delNode(root.right, to_delete_dict, is_del)if is_del:return Noneelse:#### 如果是根节点,并且不会删除, 则添加if is_root:self.res.append(root)return rootdef delNodes(self, root: Optional[TreeNode], to_delete: List[int]) -> List[TreeNode]:if root == None:return []to_delete_dict = {}for x in to_delete:to_delete_dict[x] = 1temp = self.delNode(root, to_delete_dict, True)return self.res
http://www.lryc.cn/news/94681.html

相关文章:

  • 华为Harmony应用开发初探
  • 电脑应用程序发生异常怎么办?
  • 【JAVA】准备工作------Java开发环境搭建,IDEA的基础设置与操作
  • 操作系统真象还原——第5章 保护模式进阶,向内核迈进
  • 设计一款助听器可能需要用到以下音频算法
  • 【端午节】用Vue3写粽子——从零开始
  • 大象机器人人工智能套装2023版深度学习协作机器人、先进机器视觉与应用场景
  • Cesium Token申请
  • ubuntu系统自带的Text Editor编辑器不高亮解决办法
  • Docker NGINX 加载Geoip模板
  • springboot基于协同过滤算法商品推荐系统
  • 基于机器学习算法:朴素贝叶斯和SVM 分类-垃圾邮件识别分类系统(含Python工程全源码)
  • 在Linux下将PNG和JPG批量互转的四种方法
  • Scala中使用 break 和 continue
  • 【全栈开发指南】打包sentinel-dashboard镜像推送到Docker Hub镜像仓库
  • 【数据可视化】SVG(一)
  • linux 系统errno 对应参考及代码
  • PowerShell快速ssh
  • 从php5.6到golang1.19-文库App性能跃迁之路
  • 成功解决 AttributeError: ‘Field‘ object has no attribute ‘vocab‘
  • ikbc键盘2.4G接收器丢失,重新对码
  • STM32 Proteus仿真医用仓库环境控制系统紫外线消毒RS232上传CO2 -0066
  • Docker(二)之容器技术所涉及Linux内核关键技术
  • 计算机网络_ 1.3 网络核心 (数据交换_电路交换)
  • Kafka高性能集群部署与优化
  • Lucene介绍与入门使用
  • 【最短路+状压】CF1846 G
  • vue+elementui实现英雄联盟道具城
  • ruby注释
  • 2023(WAIC)智能驾驶科技峰会丨拓数派大模型下的数据计算系统,助力汽车智能化产业数据增值