Leetcode 1110:删点成林(超详细的解法!!!)
给出二叉树的根节点 root
,树上每个节点都有一个不同的值。
如果节点值在 to_delete
中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。
返回森林中的每棵树。你可以按任意顺序组织答案。
示例:
输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]
输出:[[1,2,null,4],[6],[7]]
提示:
- 树中的节点数最大为
1000
。 - 每个节点都有一个介于
1
到1000
之间的值,且各不相同。 to_delete.length <= 1000
to_delete
包含一些从1
到1000
、各不相同的值。
解题思路
对于树的问题,我们一般首先思考递归解法,对于递归解法我们首先思考边界条件。对于这个问题,我们观察一下最后留下的森林,实际上在存储的时候我们保存的这些树的根节点。那么什么样的根节点需要保留呢?父亲节点被删除自己没有被删除。
要注意的是,虽然我们知道了最后保留哪些节点,但是我们还有一个操作需要完成,那就是删除节点的操作。这个使用递归非常简单,边界条件是当root == None
的时候我们返回None
即可,否则的话,我们的root->left=f(root->left);root->right=f(root->right)
,其中f
函数就是我们的删除节点操作函数。
最后代码也非常简洁
class Solution:def delNodes(self, root: TreeNode, to_delete: List[int]) -> List[TreeNode]:res = list()to_delete = set(to_delete)def preOrder(root, n_root):if root:if root.val not in to_delete and n_root:res.append(root)root.left = preOrder(root.left, root.val in to_delete)root.right = preOrder(root.right, root.val in to_delete)return None if root.val in to_delete else rootpreOrder(root, True)return res
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!
Leetcode 1110:删点成林(超详细的解法!!!)相关推荐
- Leetcode 1110.删点成林(Delete Nodes And Return Forest)
Leetcode 1110.删点成林 1 题目描述(Leetcode题目链接) 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节 ...
- Leetcode 1162:地图分析(超详细的解法!!!)
你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗 ...
- LeetCode 1110. 删点成林(二叉树递归)
1. 题目 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- leetCode 1110 删点成林(树,后序遍历)
题目链接:点击查看 题目描述: 给定一个整数二叉树和一些整数,求删掉这些整数对应的节点后,剩余的子树. 输入输出: 输入:root = [1,2,3,4,5,6,7], to_delete = [3, ...
- leetcode 1110. 删点成林
题目描述: 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- LeetCode 1110.删点成林
主页有其他数据结构内容(持续更新中) 难度:Medium 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val ...
- LeetCode 刷题系列 -- 1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...
- Leetcode 37:解数独(超详细的解法!!!)
编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 3x3 ...
- leetcode 111.删点成林 C++
leetcode 111.删点成林 C++ 删点成林 题目描述 示例 提示 解题思路 C++代码 注意事项 删点成林 题目描述 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值 ...
- PigyChan_LeetCode 1110. 删点成林
1110. 删点成林 难度中等 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的 ...
最新文章
- 关于使用JAVA中JDK安装和在命令行中编译和运行程序的一些总结
- HTML5 details 标签
- svn命令行使用说明
- 无线数传电台工业控制的应用
- 人类一败涂地做图教程_绘画步骤_人类一败涂地鼠绘人物步骤与技巧_3DM单机
- Chrome浏览器获取XPATH的方法----通过开发者工具获取
- 大数据学习笔记21:MR案例——分区全排序
- oracle12c正在检查环境变量,oracle11g安装客户端检查先决条件失败
- SpringBoot+AOP构建多数据源的切换实践
- mysql查询不超过19_mysql45讲 19.为什么我只查一行的语句,也执行这么慢?
- MyEclipse添加Mybatis generator插件
- chmod 777命令_Linux shell命令总结
- Mysql查询性能优化
- Arduino Uno - 控制4位8段共阴极数码管 显示数字
- RADIUS协议解析
- ImportError: cannot import name ‘export_saved_model‘ from ‘tensorflow.python.keras.saving.saved_mode
- 大学生php实训总结_php实训报告.doc
- 无线路由器DNS服务器解析,路由器DNS劫持简单实现和防范分析
- java 构造方法 继承_java-继承/构造方法?
- Query Planning(查询方案)(搜索一)
热门文章
- 断电后,台式计算机无法启动,练习台式机电脑停电后开不了机怎么办呢?
- android 即时战略游戏,即时战略手游排行榜前十名 即时战略游戏推荐
- Python——检查 JSON 字符串格式错误的位置
- 网络配置出错导致不能上网,如何重新启用以太网?
- feet在c语言中是什么意思,feet是什么意思-foot的含义、短语等出发
- 计算机科学与技术本科人才培养方案评审意见,人才培养方案评审意见
- 端午节论屈原之离骚和程序开发之离怨
- java三角形梯形和圆形类_JAVA----第六周(实现对三角形、梯形、圆形的封装)
- 如何在不同链部署地址完全相同的合约
- Beyond MapReduce:谈2011年风靡的数据流计算系统