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:
主要思路:解题链接汇总
(1)广度优先+先序遍历;
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:void pre_order(TreeNode* cur,TreeNode* pre,queue<TreeNode*>&q,unordered_set<int>&st){if(cur==NULL){return;}//需要删除当前结点if(st.count(cur->val)){//压入后面的两个子树到队列中if(cur->left){q.push(cur->left);}if(cur->right){q.push(cur->right);}//删除当前结点if(pre!=NULL){if(pre->left==cur){pre->left=NULL;}else{pre->right=NULL;}}//删除对应值st.erase(cur->val);return;}pre_order(cur->left,cur,q,st);pre_order(cur->right,cur,q,st);}vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {unordered_set<int> st;//将需要删除的结点进行哈希for(int&i:to_delete){st.insert(i);}queue<TreeNode*> q;//存储各个子树的根节点vector<TreeNode*> res;q.push(root);while(!st.empty()){root=q.front();//当前子树的判读q.pop();//若当前子树的根节点是要删除的结点,则进行删除,并存储两个子树if(st.count(root->val)){if(root->left!=NULL){q.push(root->left);}if(root->right!=NULL){q.push(root->right);}st.erase(root->val);}else{//否则,当前子树的根节点就是要返回的子树根节点之一res.push_back(root);pre_order(root,NULL,q,st);//先序遍历,删除后面的结点}}//获得其他子树的根节点while(!q.empty()){res.push_back(q.front());q.pop();}return res;}
};
1110 删点成林相关推荐
- Leetcode 1110.删点成林(Delete Nodes And Return Forest)
Leetcode 1110.删点成林 1 题目描述(Leetcode题目链接) 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节 ...
- PigyChan_LeetCode 1110. 删点成林
1110. 删点成林 难度中等 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的 ...
- LeetCode 刷题系列 -- 1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...
- 1110. 删点成林
给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...
- leetCode 1110 删点成林(树,后序遍历)
题目链接:点击查看 题目描述: 给定一个整数二叉树和一些整数,求删掉这些整数对应的节点后,剩余的子树. 输入输出: 输入:root = [1,2,3,4,5,6,7], to_delete = [3, ...
- 力扣解法汇总1110. 删点成林
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCod ...
- LeetCode 1110. 删点成林(二叉树递归)
1. 题目 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- leetcode 1110. 删点成林
题目描述: 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...
- LeetCode 1110.删点成林
主页有其他数据结构内容(持续更新中) 难度:Medium 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val ...
最新文章
- Navicat 12连接PostgreSQL11.3数据库服务器
- lyGrid列表格式化日期
- Three.js中实现点击按钮添加删除旋转立方体
- 牛客网-数据结构笔试题目(六)-最近点对问题求解思路
- 深度学习(11)-- GAN
- java工程师占比_Java工资怎么样?哪个地方Java工作机会最多?
- 3-3 编程练习:jQuery键盘事件案例
- Spring MVC 使用问题与解决--HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
- 均分纸牌模型之mxj分礼物
- Vue底层判断标签的性能优化方法
- 骚操作“破解“App
- 【精彩文章】数学家论数学——数学的本质
- 关于开会了一点点想法
- 2021-12-23 714. 买卖股票的时机含手续费(动态规划)
- 2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现
- R语言绘制生存曲线估计|生存分析|如何R作生存曲线图
- ubuntu文本输入源,找不到中文拼音输入源
- 如何批量提取过期域名,如何批量查询权重域名、收录域名
- 软件开发团队成员分工_分析软件开发人员的能力–选择合适的团队成员
- 测试普通话水平的软件,求测试普通话标准的软件?6款普通话软件推荐