题目描述:
给出二叉树的根节点 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 删点成林相关推荐

  1. Leetcode 1110.删点成林(Delete Nodes And Return Forest)

    Leetcode 1110.删点成林 1 题目描述(Leetcode题目链接)   给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节 ...

  2. PigyChan_LeetCode 1110. 删点成林

    1110. 删点成林 难度中等 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的 ...

  3. LeetCode 刷题系列 -- 1110. 删点成林

    给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...

  4. 1110. 删点成林

    给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中的每棵树.你 ...

  5. leetCode 1110 删点成林(树,后序遍历)

    题目链接:点击查看 题目描述: 给定一个整数二叉树和一些整数,求删掉这些整数对应的节点后,剩余的子树. 输入输出: 输入:root = [1,2,3,4,5,6,7], to_delete = [3, ...

  6. ​力扣解法汇总1110. 删点成林

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCod ...

  7. LeetCode 1110. 删点成林(二叉树递归)

    1. 题目 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...

  8. leetcode 1110. 删点成林

    题目描述: 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合). 返回森林中 ...

  9. LeetCode 1110.删点成林

    主页有其他数据结构内容(持续更新中) 难度:Medium 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val ...

最新文章

  1. Navicat 12连接PostgreSQL11.3数据库服务器
  2. lyGrid列表格式化日期
  3. Three.js中实现点击按钮添加删除旋转立方体
  4. 牛客网-数据结构笔试题目(六)-最近点对问题求解思路
  5. 深度学习(11)-- GAN
  6. java工程师占比_Java工资怎么样?哪个地方Java工作机会最多?
  7. 3-3 编程练习:jQuery键盘事件案例
  8. Spring MVC 使用问题与解决--HTTP Status 500 - Servlet.init() for servlet springmvc threw exception
  9. 均分纸牌模型之mxj分礼物
  10. Vue底层判断标签的性能优化方法
  11. 骚操作“破解“App
  12. 【精彩文章】数学家论数学——数学的本质
  13. 关于开会了一点点想法
  14. 2021-12-23 714. 买卖股票的时机含手续费(动态规划)
  15. 2.Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features论文核心解读以及代码实现
  16. R语言绘制生存曲线估计|生存分析|如何R作生存曲线图
  17. ubuntu文本输入源,找不到中文拼音输入源
  18. 如何批量提取过期域名,如何批量查询权重域名、收录域名
  19. 软件开发团队成员分工_分析软件开发人员的能力–选择合适的团队成员
  20. 测试普通话水平的软件,求测试普通话标准的软件?6款普通话软件推荐

热门文章

  1. 错题-阅读理解-逻辑填空1
  2. 【模型训练】YOLOv7道路裂缝检测
  3. Linux的历史----Linux内核剖析(一)
  4. 28845-97-8,Ac-K-DAla-DAla-OH
  5. Virtuoso仿真错误 ---- input.scs
  6. 新港转债,百洋转债上市价格预测
  7. 东方财富:公司可转债今年5月13日停止交易和转股
  8. 要拼尽全力,也要驻足停歇
  9. 献礼20周年! 互联网研发管理现状主题分享
  10. antd design Upload文件上传,删除,批量上传组件封装