450.删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
一般来说,删除节点可分为两个步骤:
- 首先找到需要删除的节点;
- 如果找到了,删除它。
说明: 要求算法时间复杂度为 O(h),h 为树的高度。
示例:
root = [5,3,6,2,4,null,7] key = 35/ \3 6/ \ \ 2 4 7给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。5/ \4 6/ \ 2 7另一个正确答案是 [5,2,6,null,4,null,7]。5/ \2 6\ \4 7
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* deleteNode(TreeNode* root, int key) {
if (!root) return NULL;
if (root->val > key) {
root->left = deleteNode(root->left, key);
} else if (root->val < key) {
root->right = deleteNode(root->right, key);
} else {
if (!root->left || !root->right) {
root = (root->left) ? root->left : root->right;
} else {
TreeNode *cur = root->right;
while (cur->left) cur = cur->left;
root->val = cur->val;
root->right = deleteNode(root->right, cur->val);
}
}
return root;
}
};
450.删除二叉搜索树中的节点相关推荐
- 代码随想录算法训练营第22天 二叉树 java :235. 二叉树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
文章目录 LeetCode 236. 二叉树的最近公共祖先 题目讲解 思路 LeetCode 701.二叉搜索树中的插入操作 题目讲解 思路 LeetCode 450.删除二叉搜索树中的节点 题目讲解 ...
- 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
文章目录 235. 二叉搜索树的最近公共祖先 思路 代码 困难 701.二叉搜索树中的插入操作 思路 代码 450.删除二叉搜索树中的节点 思路 代码 困难 今日收获 235. 二叉搜索树的最近公共祖 ...
- leetcode 450. 删除二叉搜索树中的节点 c语言实现
如题: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除节点可 ...
- 67. Leetcode 450. 删除二叉搜索树中的节点 (二叉搜索树-基本操作类)
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用.一般来说,删除节点可分为两个步 ...
- 450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变.返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除节点可分为两个 ...
- LeetCode 450. 删除二叉搜索树中的节点
参考 二叉搜索树删除操作 要删除节点有2子节点,找到右子树中最小的节点,将其val值覆盖要删除的节点值,再删除这个最小节点 要删除的节点的子节点为1个或0个,直接将要删除的节点的父节点指向子的子节点 ...
- 力扣450. 删除二叉搜索树中的节点(JavaScript)
var deleteNode = function(root, key) {//没找到if(root==null){return root}//找到了if(root.val==key){//1,没有子 ...
- LeetCode刷题实战450:删除二叉搜索树中的节点
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode450题—— 删除二叉搜索树中的节点
首先需要认识什么是二叉搜索树,可以进入百度词条https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91/70 ...
- 【数据结构与算法】之深入解析“删除二叉搜索树中的节点”的求解思路与算法示例
一.题目要求 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变,返回二叉搜索树(有可能被更新)的根节点的引用. 一般来说,删除 ...
最新文章
- linux中用gtk编写的聊天室能运行的,CHAT_ROOM
- 写的书太受欢迎怎么办?北大《深度强化学习》重磅开放下载
- Windows核心编程 第十九章 DLL基础
- c++ explicit 修饰构造函数
- Python【每日一问】08
- 转软件开发过程中的各种文档
- Python编程从入门到实践~操作列表
- TV3是马来西亚第一家商营电视台
- 介绍个好点的,JAVA技术群
- 。。。剑指Offer之——反转链表。。。
- Least-Squares Fitting of Two 3-D Point Sets
- mysql与sqlyog连接_如何用sqlyog实现远程连接mysql
- Use Data Caching Techniques to Boost Performance and Ensure Synchronization(转)
- pythonATM,购物车项目实战5-数据处理层
- python如何识别中文_python 判断是否为中文
- 数据库——MySQL——完整性约束
- 后端springboot、mybatisplus,前端vue-cli3、elementUI、axios,使用阿里巴巴提供的easyExcel导入导出excel表格
- 网园网络电视 v1.2 官方
- 基于Web开发资料专集
- 初见Python与对未来的展望
热门文章
- 完整的vue-cli3项目创建过程以及各种配置
- Windows下搭建GCC + Eclipse + OpenOCD的ARM开发环境
- django1.2中将ManyToManyField呈现为checkbox
- C#编程(七)----------命名空间
- 修改oracle数据库的编码为utf-8
- C# 简单封装一个XML文件读取类
- STC学习:导航按键与数字按键综合控制数码管
- 鸡兔同笼(一道明显的体现cin和cout运行较慢的特点)
- Scikit-Learn (浅谈Kmeans聚类算法)
- OpenCV-图像处理(04、图像操作)