参考 二叉搜索树删除操作

  • 要删除节点有2子节点,找到右子树中最小的节点,将其val值覆盖要删除的节点值,再删除这个最小节点
  • 要删除的节点的子节点为1个或0个,直接将要删除的节点的父节点指向子的子节点
class Solution {public:TreeNode* deleteNode(TreeNode* root, int key) {TreeNode *parent = NULL, *cur = root;while(cur && cur->val != key){parent = cur;if(cur->val < key)cur = cur->right;elsecur = cur->left;}if(cur == NULL)return root;if(cur->left != NULL && cur->right != NULL){//要删除的节点有2个子节点,找到右子树最小的换上去,在删除TreeNode *minP = cur->right, *minPfather = cur;while(minP->left){minPfather = minP;minP = minP->left;}cur->val = minP->val;cur = minP;//要删除的curparent = minPfather;}//要删除的节点有1个或0个子节点TreeNode *child;if(cur->left)child = cur->left;else if(cur->right)child = cur->right;elsechild = NULL;if(parent == NULL)//要删的是根节点root = child;else if(cur == parent->left)parent->left = child;elseparent->right = child;return root;}
};

LeetCode 450. 删除二叉搜索树中的节点相关推荐

  1. leetcode 450. 删除二叉搜索树中的节点 c语言实现

    如题: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除节点可 ...

  2. 67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)

    给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用.一般来说,删除节点可分为两个步 ...

  3. 代码随想录算法训练营第22天 二叉树 java :235. 二叉树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

    文章目录 LeetCode 236. 二叉树的最近公共祖先 题目讲解 思路 LeetCode 701.二叉搜索树中的插入操作 题目讲解 思路 LeetCode 450.删除二叉搜索树中的节点 题目讲解 ...

  4. 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

    文章目录 235. 二叉搜索树的最近公共祖先 思路 代码 困难 701.二叉搜索树中的插入操作 思路 代码 450.删除二叉搜索树中的节点 思路 代码 困难 今日收获 235. 二叉搜索树的最近公共祖 ...

  5. 450. 删除二叉搜索树中的节点

    给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除节点可分为两个 ...

  6. 力扣450. 删除二叉搜索树中的节点(JavaScript)

    var deleteNode = function(root, key) {//没找到if(root==null){return root}//找到了if(root.val==key){//1,没有子 ...

  7. ​LeetCode刷题实战450:删除二叉搜索树中的节点

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. LeetCode450题—— 删除二叉搜索树中的节点

    首先需要认识什么是二叉搜索树,可以进入百度词条https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91/70 ...

  9. 【数据结构与算法】之深入解析“删除二叉搜索树中的节点”的求解思路与算法示例

    一.题目要求 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变,返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除 ...

最新文章

  1. python import io_详解Python IO编程
  2. mybatis 配置文件中set丢失逗号
  3. 云炬Android开发教程 Android studio的详细安装步骤
  4. 事物的开始和结束命令分别是什么_AutoCAD小秘密065:LOFT命令,创建天圆地方
  5. beoplay耳机序列号查询_BOSE耳机序列号如何查询?
  6. grafana zabbix 模板_Grafana + Zabbix 监控系统搭建
  7. Vue、J2ee - 001 : Vue项目的创建过程
  8. python 面向对象的封装_Python面向对象封装操作案例详解
  9. java 面试常问问题
  10. George Moody 对OSEA 软件的修改
  11. 三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  12. Tomcat 7 的七大新特性
  13. PKI/CA工作原理及架构
  14. 通俗的理解:什么是编程语言?
  15. awk从atq检索第一个字段报告 [英]awk to retrieve the first field report from atq
  16. 毁三观:从 onSavedInstanceState 中取值竟为空?!
  17. 原装苹果手机_“苹果”手机换个屏水这么深!嘉兴警方揭开“原装屏”背后真相...
  18. rog主板php,功能丰富的主板BIOS
  19. mercury路由器重置后服务器无响应,MERCURY无线路由器重置后重新设置不能 – 手机爱问...
  20. 大公开!精美动图制作只需这几款工具!

热门文章

  1. 人脸识别进水_万维|人脸识别闸机怎么选?
  2. 数据结构:排序算法之堆排序和选择排序
  3. android系统提供了url通信,Android两种HTTP通信,HttpURLConnection和HttpClient
  4. Android查看真机布局,android-外部存储
  5. mysql的char和varchar_MySQL的char和varchar
  6. c++远征之模板篇——标准模板库(STL)
  7. pandas用众数填充缺失值_python数据分析包|Pandas-02之缺失值(NA)处理
  8. odoo基础数据加载
  9. EUREKA原理总结
  10. MySQL中Index Condition Pushdown(ICP)优化