java数据结构与算法刷题-----LeetCode450. 删除二叉搜索树中的节点

搭建适用于lammps中opls-aa力场的文件流程 现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

文章目录

在这里插入图片描述

解题思路
  1. 如果当前结点node是要删除的结点,我们可以选择以下两种方案任意一种
  1. 右子树成为当前新的node。并将左子树插入右子树中
  2. 左子树成为新的node,并将右子树插入左子树中。
  1. 我们这里选择,提上来右子树,然后按照BST的规则,将左子树插入到提上来的右子树中

1. 递归

代码:时间复杂度O(n),空间复杂度O(n)

在这里插入图片描述

class Solution {
    public TreeNode deleteNode(TreeNode root,int key){
        if(root == null) return null;
        if(key < root.val){
            root.left = deleteNode(root.left,key);
            return root;//在左边,就没必要向下继续执行了
        }else if(key > root.val){
            root.right = deleteNode(root.right,key);
            return root;//在右边,就没必要向下继续执行了
        }
        if(key == root.val) return insertBST(root.right,root.left);
        return root;
    }
    //将node插入到以root为根结点的BST中,返回插入后的根结点
    public TreeNode insertBST(TreeNode root,TreeNode node){
        // if(root== null && node == null) return null;
        if(root == null) return node;//如果root为空,直接返回node
        if(node == null) return root;//如果node为空,直接返回root
        if(root.val < node.val){//如果node大,往右边插
            if(root.right == null) root.right = node;
            else insertBST(root.right,node);
        }else if(root.val > node.val){//node小,往左边插
            if(root.left == null) root.left = node;
            else insertBST(root.left,node);
        }
        return root;//返回插入后根结点。
    }

}
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

2. 迭代

代码:时间复杂度O(n),空间复杂度O(1)

在这里插入图片描述

class Solution {
    public TreeNode deleteNode(TreeNode root,int key){
        if(root == null) return null;
        TreeNode cur = root,curParent = null;//cur表示当前迭代结点,curParent是cur的父结点
        //用cur找到要删除的结点
        while(cur != null && cur.val!=key){
            curParent = cur;
            if(key < cur.val) cur = cur.left;
            else if(key > cur.val) cur = cur.right;
        }
        if(cur == null) return root;//如果cur没找着,说明没有要删的对象,直接返回
        cur = insertBST(cur.right,cur.left);//否则将其左子树插入右子树中,再保存回cur变量中,cur将成为取代要删除结点的新结点
        if(curParent == null)return cur;//如果cur没有父结点,说明删除的是根结点,直接返回cur即可
        //如果cur的父结点不为null,说明删除的不是根
        if(curParent.left!=null&&curParent.left.val == key) curParent.left = cur;//如果删除的是父结点的左子树,就取代左子树
        else if(curParent.right != null && curParent.right.val == key) curParent.right = cur;//如果是右子树,就取代右子树
        return root;//返回根结点
    }
    //将node插入到以root为根结点的BST中,返回插入后的根结点
    public TreeNode insertBST(TreeNode root,TreeNode node){
        if(root == null && node == null) return null;
        else if(root == null) return node;
        else if(node == null) return root;
        TreeNode cur = root;
        while(cur != null){
            if(node.val < cur.val) {
                if(cur.left == null) {
                        cur.left = node;break;
                }
                else cur = cur.left;
            }else if(node.val > cur.val){
                if(cur.right == null) {cur.right = node;break;}
                else cur = cur.right;
            }
        }
        return root;
    }

}
海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程? 阅读详情

相关推荐

T100批处理作业开发

g_bgjob = ‘Y’ 后台执行g_bgjob = ‘N’ 前台执行。

weixin_43400895的博客 585

LeetCode题练习与总结:删除二叉搜索树中的节点--450

本文详细介绍了在二叉搜索树中删除节点的解题思路和具体实现,包括递归查找和删除节点,以及时间复杂度和空间复杂度分析,总结了涉及的重要知识点。

一直学习永不止步 2050

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1276

Java实现 LeetCode 450 删除二叉搜索树中的节点

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: root = [5,3,6,2,4,null...

南 墙 1万+

人工智能在高中教育中的应用现状剖析与挑战应对

人工智能在高中教育中的应用现状剖析与挑战应对

燕鹏 1340

如何解决Windows系统中缺失oem*.inf文件导致的软件运行问题

本文详细解析了Windows系统中因oem*.inf文件缺失导致软件无法运行的常见问题。文章阐述了oem*.inf文件作为安装信息文件的重要作用,并提供了从精准定位文件路径、安全获取与替换文件的手动修复步骤,到利用专业工具进行一站式修复的完整解决方案。最后,还给出了从软件安装来源、卸载习惯到系统维护等方面的预防措施,帮助用户彻底避免此类问题。

water的专栏 547

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

555定时器呼吸灯电路制作全攻略:从仿真到实物搭建(附避坑指南)

本文详细介绍了使用555定时器制作呼吸灯电路的完整流程,从基础原理到实物搭建,包括电路设计、元件选择、仿真验证、焊接技巧及调试优化。特别提供了避坑指南,帮助电子爱好者快速掌握这一经典DIY项目,实现美观的呼吸灯效果。

weixin_33734785的博客 402

每日一题:Leetcode-450 删除二叉搜索树中的节点

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 1278

图形学常见概念小结

前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点; 文章目录PBR流程渲染管线细分着色器的底层实现,应用原理常见的色调映射算法openGl和Direct X的区别PBR流程和URP渲染管线Camera loop(剔除)MVP矩阵变换光线追踪前向渲染和延迟渲染shader和材质的区别bloom原理后处理的理解高斯模糊实现原理图像处理中的边缘检测算子 PBR流程 小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射、线性空间等的科学理论所实现的基于物理的渲染系统,包含一

小谁的博客 1165

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5618

LeetCode第450题:删除二叉搜索树中的节点的Java实现

LeetCode第450题要求从二叉搜索树(BST)中删除一个节点。本文将介绍两种Java实现方法:迭代法和递归法。LeetCode第450题是一个典型的二叉搜索树问题,通过理解BST的性质,可以有效地删除指定的节点。递归法和迭代法都是有效的解决方案。

2301_77695569的博客 702

2026年数学建模国赛C题利器:层次分析法与主成分分析在统计建模中的应用

本文系统探讨了层次分析法(AHP)与主成分分析(PCA)在数学建模竞赛,特别是全国大学生数学建模竞赛C题中的联合应用策略。通过理论阐述、方法对比和案例实践,本文揭示了两种方法从“数据降维”到“决策评价”的完整分析链条,提出了“PCA+AHP”协同框架,并通过实际算例验证了该框架在解决复杂评价类问题中的有效性和优越性。研究表明,将PCA的客观降维能力与AHP的主观决策优势有机结合,能够显著提升统计建模的科学性、合理性和解释力,是应对日益复杂的竞赛题目的重要方法论工具。关键词:层次分析法;主成分分析;数学建模。

YOLO 41

数据结构与算法——Java实现 49.力扣450题——删除二叉搜索树中的节点

给定一个二叉搜索树的根节点和一个值,删除二叉搜索树中的对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。另一个正确答案是 [5,2,6,null,4,null,7]。二叉树不包含值为 0 的节点[]

m0_73983707的博客 692

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

摘要: 本文介绍了如何在二叉搜索树中删除指定节点。删除操作需要考虑五种情况:未找到节点、叶子节点、左子树空、右子树空,以及左右子树均存在的情况。对于最复杂的第五种情况,需将删除节点的左子树挂到右子树的最左节点下,再返回右子树作为新根。通过递归实现,保持二叉搜索树性质。相比于插入操作,删除节点更复杂,需要处理结构调整和子树移动。代码需注意节点释放和正确返回更新后的树结构。

m0_68880377的博客 623

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

LeetCode 450删除二叉搜索树中的节点 题目简述:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。 输入:root = [5,3,6,2,4,null,7] key = 3 输出:[5,4,6,2,null,null,7] 或者 [5,2,6,null,4,null,7]

XBlog 286

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

weixin_51568952的博客 1957

代码随想录刷题day20丨235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点

文档讲解:https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.html解题思路:递归法或者迭代法。

m0_75195038的博客 1148

LeetCode450. 删除二叉搜索树中的节点(Java)

题目: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: 代码: 解法一 /** * Definition for a ...

inferno_devil的博客 945

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

Leetcode450. 删除二叉搜索树中的节点 题目: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: root = [5,3,6,2,4,null,7] key = 3 5 / \ 3 6 / \ \

会流泪de鱼的博客 154

leetcode450. 删除二叉搜索树中的节点(java)

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。输入: root = [5,3,6,2,4,null,7], key = 0。输入:root = [5,3,6,2,4,null,7], key = 3。另一个正确答案是 [5,2,6,null,4,null,7]。输出:[5,4,6,2,null,null,7]输出: [5,3,6,2,4,null,7]

SP_1024的博客 978

算法训练(leetcode)二刷第十七天 | 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、*450. 删除二叉搜索树中的节点

LeetCode二刷

weixin_43872997的博客 1153

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

本文详细解析了二叉搜索树删除节点的操作,重点分析了五种不同情况的处理逻辑:空节点、叶子节点、单左/右子树节点、双子树节点。通过递归实现,代码将目标节点的左子树连接到右子树的最小节点下方,确保删除后仍保持BST特性。算法时间复杂度为O(h),空间复杂度为O(h),其中h为树高。该实现展现了BST删除操作的核心思想,为理解更复杂的树结构操作奠定了基础。

mrjieke6的博客 748

​力扣解法汇总450-删除二叉搜索树中的节点

​力扣解法汇总450-删除二叉搜索树中的节点

分享+记录 471

[LeetCode] 450、删除二叉搜索树中的节点

题目描述 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 root = [5,3,6,2,4,null,7] key = 3 5 / \ 3 6 / \ \ 2 4 7 给定需要删除的节点值是 3,所以

aift的专栏 541
上一篇: java数据结构与算法刷题-----LeetCode701. 二叉搜索树中的插入操作
下一篇: java数据结构与算法刷题-----LeetCode669. 修剪二叉搜索树
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值