当前位置: 首页 > news >正文

Day118 | 灵神 | 二叉树 | 删点成林

Day118 | 灵神 | 二叉树 | 删点成林

1110.删点成林

1110. 删点成林 - 力扣(LeetCode)

思路:

最直接的思路就是看当前结点的值是不是在要删除的列表中,在的话删除当前结点并把左右孩子加入res中

很可惜这样是错的,因为这样做只是删除了当前结点,没有改变当前结点父节点的指针,导致父节点的里面还放着我们已经delete以后的地址空间,这样做漏洞很大

class Solution {
public:vector<TreeNode*> res;unordered_set<int> s;void dfs(TreeNode *t){if(t==nullptr)return ;if (s.find(t->val)!=s.end()){res.push_back(t->left);res.push_back(t->right);}dfs(t->left);dfs(t->right);if (s.find(t->val)!=s.end())delete t;}vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {for (int x : to_delete) s.insert(x); dfs(root);if (s.find(root->val)!=s.end())return res;res.push_back(root);return res;}
};

正确的做法是后序遍历,返回值是当前结点删了没删

如果当前结点该删除,那就给上层节点返回nullptr,告知父节点该节点被删了

​ 同时还要把不为空的左右孩子加入到森林中

如果当前结点没有被删除,那就给上层结点返回当前结点,表示当前结点没有被删除

完整代码:

class Solution {
public:vector<TreeNode*> res;unordered_set<int> s;TreeNode* dfs(TreeNode* node) {if (!node) return nullptr;// 先递归处理子树node->left = dfs(node->left);node->right = dfs(node->right);// 判断当前节点是否需要删除if (s.count(node->val)) {if (node->left) res.push_back(node->left);if (node->right) res.push_back(node->right);return nullptr; // 告知父节点指针置空}return node;}vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {for (int x : to_delete) s.insert(x);root = dfs(root);if (root) res.push_back(root); // 处理根节点return res;}
};

相关文章:

  • 详解 Zephyr RTOS:架构、功能与开发指南
  • Makefile 在 Go 项目中的实践
  • 养生:打造健康生活的四大支柱
  • 和为target问题汇总
  • 低分辨率运行安卓模拟器:
  • 商业架构 2.0 时代:ZKmall开源商城前瞻性设计如何让 B2B2C 平台领先同行 10 年?
  • mock 数据( json-server )
  • 【Spring Cloud Gateway】Nacos整合遇坑记:503 Service Unavailable
  • 【上位机——WPF】App.xml和Application类简介
  • 【微服务】SpringBoot + Docker 实现微服务容器多节点负载均衡详解
  • 【FileZilla】Client端的线程模型 (一)
  • python-修改图片背景色
  • Missashe考研日记—Day37-Day43
  • 力扣310.最小高度树(拓扑排序,无向图),力扣.加油站力扣.矩阵置零​​​力扣.二叉树中的最大路径和
  • 如何在Firefox火狐浏览器里-安装梦精灵AI提示词管理工具
  • 计网实验(四)CS144 Lab4
  • 【技术原理】Linux 文件时间属性详解:Access、Modify、Change 的区别与联系
  • 2025年5月华为H12-821新增题库带解析
  • React学习———Redux 、 React Redux和react-persist
  • 分布式AI推理的成功之道
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 车主质疑零跑汽车撞车后AEB未触发、气囊未弹出,4S店:其把油门当刹车
  • 董军同德国国防部长举行会谈
  • 辽宁盘山县一乡镇幼儿园四名老师被指多次殴打一女童,均被行拘
  • 新闻1+1丨城市,如何对青年更友好?
  • 占地57亩的“潮汕豪宅”面临强制拆除:曾被实施没收,8年间举行5次听证会