news 2026/6/20 6:45:25

LC.450 | 删除二叉搜索树中的节点 | 树 | 暴力重构/转化思维

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.450 | 删除二叉搜索树中的节点 | 树 | 暴力重构/转化思维

输入:
二叉搜索树的根节点root和一个需要删除的值key

要求:
删除 BST 中的指定节点,并保证二叉搜索树性质不变。

输出:
删除后的新树根节点。


思路:

这道题的标准解法通常涉及复杂的指针操作(特别是处理双子节点的情况)。但在实际解题或笔试中,如果我们一时无法理清复杂的指针断连逻辑,可以转换思维,利用“数据结构的特性”来降维打击。
当然这题自然有正规写法,等回头思路清晰了再来写,今天先来个暴力写法开开胃。
本题解采用“暴力重构”策略:
既然在树上直接修补很难,不如利用 BST 的性质:

  1. 拆迁(遍历):二叉搜索树本质上就是一堆有序的数据。我们可以先遍历整棵树,把除了目标key以外的所有节点值都收集到一个数组中。
  2. 重建(构造):拿着这个干净的数组,直接调用“构建二叉搜索树”(参考 LC.1008)的逻辑,重新盖一棵新树。

虽然这种方法在空间和时间上不是最优(涉及大量内存分配),但它逻辑极其简单,不易出错,是一种非常实用的“工程化”解题思路——解决不了问题,就解决提出问题的人(节点),然后重新组队。


复杂度:

  • 时间复杂度:O(N)O(N)O(N)
    • 遍历收集节点需要O(N)O(N)O(N),重新构建树也需要O(N)O(N)O(N)。虽然常数项较大,但量级依然是线性的。
  • 空间复杂度:O(N)O(N)O(N)
    • 需要一个数组来存储所有节点的值,加上递归栈的空间。

#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode():val(0),left(nullptr),right(nullptr){}TreeNode(intx):val(x),left(nullptr),right(nullptr){}TreeNode(intx,TreeNode*left,TreeNode*right):val(x),left(left),right(right){}};classSolution{public:TreeNode*deleteNode(TreeNode*root,intkey){vector<int>vals;preorder(root,vals,key);returnbuildTree(vals);}voidpreorder(TreeNode*root,vector<int>&vals,intkey){if(!root)return;if(root->val!=key){vals.push_back(root->val);}preorder(root->left,vals,key);preorder(root->right,vals,key);}// 照搬 LC.1008 的逻辑TreeNode*buildTree(vector<int>&pre){if(pre.size()==0)returnnullptr;TreeNode*root=newTreeNode(pre[0]);vector<int>leftPart,rightPart;for(inti=1;i<pre.size();i++){if(pre[i]<pre[0])leftPart.push_back(pre[i]);elserightPart.push_back(pre[i]);}root->left=buildTree(leftPart);root->right=buildTree(rightPart);returnroot;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 1:39:44

apk pure安卓应用风险高?转向桌面端AI工具更安全

从高风险APK到本地AI&#xff1a;为何Qwen3-32B正成为安全智能的新选择 在某金融科技公司的内部审计中&#xff0c;一次例行检查发现多名员工的手机上安装了一款名为“AI代码助手”的应用——它能快速解释复杂算法、生成Python脚本&#xff0c;甚至自动补全SQL查询。听起来很高…

作者头像 李华
网站建设 2026/6/20 15:01:03

火山引擎AI大模型对比:Qwen3-32B表现亮眼

火山引擎AI大模型对比&#xff1a;Qwen3-32B表现亮眼 在当前企业级AI应用的落地浪潮中&#xff0c;一个核心矛盾日益凸显&#xff1a;如何在保证模型智能水平的同时&#xff0c;控制部署成本与推理延迟&#xff1f;过去几年&#xff0c;千亿参数闭源模型凭借强大性能主导市场&a…

作者头像 李华
网站建设 2026/6/17 18:56:09

51单片机TM1804控制RGB灯闪烁的问题

今天在调RGB灯带时发现&#xff1a;颜色&#xff0c;数量&#xff0c;都能正常显示 但是就是每隔一会&#xff0c;某颗RGB灯都会闪一下&#xff0c; 正常&#xff1a;异常&#xff1a;&#xff08;某个灯闪烁&#xff09;最后发现是&#xff0c;是因为中断的影响 因为51单片机没…

作者头像 李华
网站建设 2026/6/10 11:47:35

Th17 细胞的分化调控、功能特征

Th17 细胞Th17 细胞&#xff08;T helper cell 17&#xff09;是一类以分泌白介素 17&#xff08;IL-17&#xff09;为核心特征的 CD4⁺辅助性 T 细胞亚群&#xff0c;其在机体防御细胞外细菌、霉菌感染及自身免疫性疾病发生发展中具有关键作用&#xff0c;是免疫学领域的重要研…

作者头像 李华
网站建设 2026/6/18 19:55:50

Git分支管理策略优化Qwen3-VL-30B版本迭代开发流程

Git分支管理策略优化Qwen3-VL-30B版本迭代开发流程 在当前AI研发进入“大模型工业化”阶段的背景下&#xff0c;如何高效管理像Qwen3-VL-30B这样参数量高达300亿、涉及多模态融合与复杂训练流水线的旗舰级视觉语言模型&#xff0c;已成为工程团队面临的核心挑战。传统的Git工作…

作者头像 李华
网站建设 2026/6/19 0:13:31

个人或中小网站有必要做流量区分吗?

在很多站长和中小网站运营者的认知里&#xff0c;“流量区分”似乎是一件只属于大型平台的事情。动辄上亿 PV、复杂的安全体系、专业的运维团队&#xff0c;才需要去区分什么是正常流量、什么是无效流量。相比之下&#xff0c;个人博客、小型项目站、企业展示站访问量不大&…

作者头像 李华