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、各不相同的值。
思路分析:
涉及树,利用递归求解。对于每一棵树,若其在待删除的结点数组中,且其父节点不在当前森林中,则添加这棵树到当前森林。其中在递归过程可以更新每棵树的左右子树,根据其左右子树的根结点是否在待删除结点数组中进行判断,若在,则当前的树的对应左右子树置为空。
代码:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 unordered_set<int> delete_node; 13 vector<TreeNode*>res; 14 TreeNode* preorder(TreeNode* root, bool n_root) 15 { 16 if(root == nullptr) 17 return nullptr; 18 bool is_delete = delete_node.count(root->val)>0; 19 if(!is_delete && n_root) 20 res.push_back(root); 21 root->left = preorder(root->left, is_delete); 22 root->right = preorder(root->right, is_delete); 23 return is_delete ? nullptr:root; 24 } 25 vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) { 26 if(root==nullptr) 27 return res; 28 delete_node = unordered_set<int>(to_delete.begin(), to_delete.end()); 29 preorder(root, true); 30 return res; 31 } 32 };
转载于:https://www.cnblogs.com/LJ-LJ/p/11435137.html
leetcode 1110. 删点成林相关推荐
- Leetcode 1110.删点成林(Delete Nodes And Return Forest)
Leetcode 1110.删点成林 1 题目描述(Leetcode题目链接) 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节 ...
- LeetCode 1110. 删点成林(二叉树递归)
1. 题目 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- leetCode 1110 删点成林(树,后序遍历)
题目链接:点击查看 题目描述: 给定一个整数二叉树和一些整数,求删掉这些整数对应的节点后,剩余的子树. 输入输出: 输入:root = [1,2,3,4,5,6,7], to_delete = [3, ...
- LeetCode 1110.删点成林
主页有其他数据结构内容(持续更新中) 难度:Medium 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val ...
- LeetCode 刷题系列 -- 1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...
- leetcode 111.删点成林 C++
leetcode 111.删点成林 C++ 删点成林 题目描述 示例 提示 解题思路 C++代码 注意事项 删点成林 题目描述 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值 ...
- PigyChan_LeetCode 1110. 删点成林
1110. 删点成林 难度中等 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的 ...
- 力扣解法汇总1110. 删点成林
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCod ...
- 1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...
最新文章
- Matlab数据的可视化 -- 饼图
- Jazzy 文档生成器使用
- python怎么安装matplotlib-python安装matplotlib
- pod实例数是什么意思_[灌水] Kubernetes In Action: Pod
- cdatabase读取excel第一行数据_pandas读取excel数据并对重复数据进行标记或者删除
- 一个简单的PHP Web论坛
- get post put delete在vue中传参方式
- C++11多线程join()和detach()
- 台达b2伺服modbus通讯_谁用电脑与台达ASDA-B2伺服通讯上-专业自动化论坛-中国工控网论坛...
- Linux>>CentOS 7镜像下载及安装
- tm影像辐射定标_遥感图像辐射定标
- 空降如何快速融入接管团队
- 任何矩阵都能变换成梯形阵的证明
- 王者荣耀微信一区的服务器没了,为什么王者荣耀微信区和QQ区玩起来像两个游戏?...
- 高处的圣地 --读《消失的地平线》
- Oracle11g64位安装教程
- 反编译工具之jadx
- 测试岗面试,一份好的简历总可以让人眼前一亮
- 插画怎么构图?小白快速上手教程
- 面向对象(文字格斗进阶版)