题目描述:

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

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

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

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

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

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

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

  4. LeetCode 1110.删点成林

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

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

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

  6. leetcode 111.删点成林 C++

    leetcode 111.删点成林 C++ 删点成林 题目描述 示例 提示 解题思路 C++代码 注意事项 删点成林 题目描述 给出二叉树的根节点 root,树上每个节点都有一个不同的值. 如果节点值 ...

  7. PigyChan_LeetCode 1110. 删点成林

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

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

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

  9. 1110. 删点成林

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

最新文章

  1. Matlab数据的可视化 -- 饼图
  2. Jazzy 文档生成器使用
  3. python怎么安装matplotlib-python安装matplotlib
  4. pod实例数是什么意思_[灌水] Kubernetes In Action: Pod
  5. cdatabase读取excel第一行数据_pandas读取excel数据并对重复数据进行标记或者删除
  6. 一个简单的PHP Web论坛
  7. get post put delete在vue中传参方式
  8. C++11多线程join()和detach()
  9. 台达b2伺服modbus通讯_谁用电脑与台达ASDA-B2伺服通讯上-专业自动化论坛-中国工控网论坛...
  10. Linux>>CentOS 7镜像下载及安装
  11. tm影像辐射定标_遥感图像辐射定标
  12. 空降如何快速融入接管团队
  13. 任何矩阵都能变换成梯形阵的证明
  14. 王者荣耀微信一区的服务器没了,为什么王者荣耀微信区和QQ区玩起来像两个游戏?...
  15. 高处的圣地 --读《消失的地平线》
  16. Oracle11g64位安装教程
  17. 反编译工具之jadx
  18. 测试岗面试,一份好的简历总可以让人眼前一亮
  19. 插画怎么构图?小白快速上手教程
  20. 面向对象(文字格斗进阶版)

热门文章

  1. java线程池ThreadPoolExecutor类详解
  2. python中typeerror是什么意思_为什么在Python中线程会出现TypeError
  3. 顺通报修管理系统维修中心管理软件
  4. 推荐几门微信小程序免费学习的课程
  5. Vue生命周期(图示详解)
  6. 自动标注工具 Autolabelimg
  7. MAStudio开源让移动OA系统走的更远
  8. C# POST 含异常处理
  9. shader基础学习摘要(三)高光反射
  10. 【观察】昇腾智行:AI稽核收费方案再创新,助推智慧高速发展“加速度”