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

Day20 | 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

二叉搜索树的最近公共祖先

[https://programmercarl.com/0235.二叉搜索树的最近公共祖先.html#算法公开课]

解法

没用二叉搜索树的性质,和之前普通二叉树的解法一样,就当复习了,挺妙的方法

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(!root || root == p || root == q) return root;TreeNode* left = lowestCommonAncestor(root->left,p,q);TreeNode* right = lowestCommonAncestor(root->right,p,q);if(left && right) return root;else if(left && !right) return left;else if(!left && right) return right;else return nullptr;}
};

二叉搜索树中的插入操作

[https://programmercarl.com/0701.二叉搜索树中的插入操作.html]

解法

顺着往下找,找到空的直接插入就行,不会出现需要插入的地方有别的节点的。

class Solution {
public:TreeNode* insertIntoBST(TreeNode* root, int val) {if(!root){return new TreeNode(val);}if(root->val > val){root->left = insertIntoBST(root->left,val);}else{root->right = insertIntoBST(root->right,val);}return root;}
};

删除二叉搜索树中的节点

[https://programmercarl.com/0450.删除二叉搜索树中的节点.html]

解法

class Solution {
public:TreeNode* deleteNode(TreeNode* root, int key) {if(!root) return root;if(root->val > key){root->left = deleteNode(root->left,key);return root;}else if(root->val < key){root->right = deleteNode(root->right,key);return root;}else{if(!root->right && !root->left) return nullptr;else if(!root->right) return root->left;else if(!root->left) return root->right;else{TreeNode* target = root->right;while(target->left){target = target->left;}root->right = deleteNode(root->right,target->val);target->right = root->right;target->left = root->left;return target;}}}
};
http://www.jsqmd.com/news/524389/

相关文章:

  • 大模型API中转推荐:A8 AI 600+模型统一路由与高可用部署,code编程、生图、视频大模型聚合应用
  • Python3.23第一次实验
  • 无需网络,离线运行:mPLUG-Owl3-2B本地多模态AI助手搭建实录
  • WAN2.2文生视频开源模型部署教程:镜像免配置+ComfyUI工作流热加载实操
  • 西门子 S7 - 200 PLC 与博图 V16、组态王 16 打造带烟雾报警的停车场组态
  • TypeScript 类型体操实战:从看不懂到手撕 5 道高频面试题
  • 2024 2025-2026-2 《Python程序设计》实验1报告
  • Goreplay实战:如何用3条命令搞定生产环境流量复制到测试服务器
  • 20252417 2025-2026-2 《Python程序设计》实验1报告
  • c语言之时间函数操作
  • [INFRA] EMR集群MetricsCollector组件功能和运行原理分析
  • 2026年五恒系统厂家推荐排行榜:别墅/大平层/洋房/叠拼/独栋/豪宅全屋定制,专业打造恒温恒湿恒氧恒洁恒静舒适生活空间 - 品牌企业推荐师(官方)
  • C++初始化列表、类型转换
  • 解决Android Studio中annotation-experimental-1.4.1.aar版本冲突的实战指南
  • DeepSpeed多卡通信避坑指南:all_to_all_single的5个常见错误及解决方法
  • 20241223 实验一《Python程序设计》实验报告
  • AGV调度算法深度解析:从避碰优化到千车并行的技术演进
  • 混合动力汽车Simulink整车模型:探索P2并联混动仿真的奇妙世界
  • 嵌入式网络调试利器:在ARM开发板上手把手编译tcpdump 4.99.4
  • 算法复杂度理论的边界与不可计算性探讨的技术7
  • 2026会议音响套装优质品牌推荐指南:报告厅音响、无纸化会议室、无纸化会议终端、无纸化会议软件、无纸化办公系统选择指南 - 优质品牌商家
  • 168开奖网源码API修复记录
  • 6.1.1 软件->PEP标准(PSF基金会):Python 标准库标准(Python Standard Library Specification)
  • 基于LBM的Xflow单相及两相流动模拟探索
  • CrossEntropyLoss参数详解:从reduction=‘none‘到loss.backward()的完整避坑指南
  • 【C++面经】轻舟智航自动驾驶应用软件开发实习岗位
  • 五大品牌设计培训机构横评——后浪教育引领未来人才培养 - 速递信息
  • ComfyUI-WanVideoWrapper:AI视频创作者的技术赋能平台
  • 基于Java的OPC DA客户端开发与常见问题解析
  • Zynq开发避坑指南:FDMA读写AXI总线时最常见的3个时序错误