力扣450 补9.15

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

可以做,就是去分类讨论,一开始以为有重复节点,感觉挺麻烦的,不过没有重复结点,感觉好做一点了,不过写结点指针赋值的时候把值赋反了,搞得一直报错,还是指针用的不熟练。

这个中等题大概做了有2个小时,水平大概就这样了,也是慢慢磨把思路磨出来的。

不过大佬的解法精简的让人称奇,不像我只会暴力,菜狗的我第n次被大佬虐。

 

class Solution {

    public TreeNode deleteNode(TreeNode root, int key) {

        if(root==null) return null;

        if(root.val==key) {

            if(root.left==null){

                return root.right;

            }else if(root.right==null){

                return root.left;

            }else if(root.left!=null&&root.right!=null){

                TreeNode p=root.left;

                while(p.right!=null){

                    p=p.right;

                }

                p.right=root.right;

                return root.left;

            }

        }

        dfs(root,key);

        return root;

    }

    void dfs(TreeNode root,int key){

        // 这个解法不够好,如果树里有重复节点就寄了,但对本题有效

        if(root==null) return;

        if(root.left!=null&&root.left.val==key){  

            if(root.left.right!=null) {   

            TreeNode p=root.left.right;

            while(p.left!=null) p=p.left;

            p.left=root.left.left;

            }

            else root.left.right=root.left.left;

            root.left=root.left.right;

        }else if(root.right!=null&&root.right.val==key){

            if(root.right.right!=null){

            TreeNode p=root.right.right;

            while(p.left!=null) p=p.left;

            p.left=root.right.left;

            }

            else root.right.right=root.right.left;

            root.right=root.right.right;

        }

        

        dfs(root.left,key);

        

        dfs(root.right,key);

    }

}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring的RestTemplate、RPC和HTTP

https://blog.csdn.net/weixin_35674711/article/details/96112328 1 . 目标 理解RPC和HTTP的区别 能使用RestTemplate发送请求 2. 讲解 1 . RPC和HTTP 常见远程调用方式: RPC:(Remote Produce Call)远程过程调用 1.基于Socket 2.自定义数据格式 3.速度快&am…

黑马JVM总结(十九)

(1)GC调优1 通过官网查看查看JVM的参数: 可以使用java命令查看当前环境下的虚拟机参数: 学会使用一些工具如前面学的jmap ,jconsole等等工具 (2)GC调优2 垃圾回收调优只是众多调优中的一个方…

读高性能MySQL(第4版)笔记14_备份与恢复(中)

1. 在线备份 2. 离线备份 2.1. 关闭MySQL做备份是最简单、最安全的 2.2. 所有获取一致性副本的方法中最好的 2.3. 损坏或不一致的风险最小 2.4. 根本不用关心InnoDB缓冲池中的脏页或其他缓存 2.5. 不需要担心数据在尝试备份的过程中被修改 2.5.1. 服务器不对应用提供访问…

vuex的安装和使用

1、安装 注意应安装和Vue对应的版本。 vue2安装命令:npm i vuex3 vue3安装命令:npm i vuex4 2、创建vuex文件 store.js import Vue from vue import Vuex from vuexVue.use(Vuex)const state {count: 0 } const mutations {PLUSE(status, val){state.…

【动态规划刷题 17】回文子串 最长回文子串

647. 回文子串 链接: 647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由…

Could not resolve dependencies for project

一 情况 拉了份代码,打包时, 出现了Could not resolve dependencies for project...... 二 解决 maven打完包运行,测试结果和本地不一致_犯错-总结-前进的博客-CSDN博客

Debian搭建smb服务器

1、确保Debian系统已经安装并处于最新状态。您可以使用以下命令更新系统: sudo apt update sudo apt upgrade2、安装Samba软件包。执行以下命令来安装Samba: sudo apt install samba3、编辑Samba配置文件。打开/etc/samba/smb.conf文件: s…

zookeeper + kafka

Zookeeper 概述 Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息,并负责通知再 ZooKeeper 上注册的服务几点状态给客户端 Zookeeper 工作机制 Zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架&…

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里,向东走了一英里,向北走了一英里,最后回到了起点。他看到了一只熊,于是开枪打了它。这只熊是什么颜色的? 答案是白色,因为这种情况只可能发生在北…

Gin学习记录4——Controller和中间件

一. Controller 用不同的Controller可以实现业务的分类,不同类型的请求可以共用同一套中间件 1.1 单文件Controller 几乎等同于函数封装,直接将ctrl的代码写入到一个文件里然后调用: package adminimport ("net/http""git…

windows进程管理相关命令

windows进程管理相关命令 根据进程名找到进程 例如python进程 PS C:\Users\27467> tasklist | findstr python python.exe 7088 Console 2 3,364 K python.exe 1580 Console 2 41,…

深度学习自学笔记三:向量化逻辑回归和Python中的广播

目录 一、向量化 二:向量化逻辑回归 三、Python中的广播 一、向量化 向量化(Vectorization)是一种优化技术,可以在机器学习和数值计算中加快代码的执行速度。它的核心思想是使用矩阵和向量运算,而不是显式地循环处…

Spring的RestTemplate学习

Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现了对象与json的序列化和反序列化,非常方便。RestTemplate并没有限定Http的客户端类型,而是进行了抽象,目前常用的3种都有支持&#xff…

数据结构与算法(六)--链表的遍历,查询和修改,删除操作

一、前言 上篇文章我们了解了链表的概念以及链表底层的搭建以及向链表中添加元素的操作。本次我们继续学习链表剩余的操作:遍历,查询和修改、删除操作。 二、链表查询以及遍历 ①获得链表的第index(0-based)个位置的元素(不常用&#xff0…

1447: PIPI的线性表问题Ⅰ

题目描述 已知线性表中的元素以递增序列排列,并以单链表作存储结构。设计算法删除表中所有值相同的多余元素(使得操作后的线性表中所有的值均不相同),同时释放被删结点空间,并分析算法的时间复杂度。 输入 第一行输…

云计算介绍

1.1 SaaS SaaS 是 Software-as-a-Service(软件即服务)1.2 PaaS PaaS 是 Platform-as-a-Service 的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的 商业模式。通过网络进行程序提供的服务称之为 SaaS(Software as a Serv…

2023年海南省职业院校技能大赛(高职组)“软件测试”赛项竞赛规程

2023年海南省职业院校技能大赛(高职组) “软件测试”赛项竞赛规程 一、赛项名称 赛项名称:软件测试 英文名称:Software Testing 赛项组别:高职组 赛项归属产业:电子信息大类 二、竞赛目标 &#xf…

MySQL详细案例 1:MySQL主从复制与读写分离

文章目录 1. MySQL主从复制1.1 使用场景1.2 MySQL的复制类型1.3 主从复制的作用1.4 主从复制的工作过程1.5 实现MySQL主从复制1.5.1 前置准备1.5.2 主服务器mysql配置1.5.3 从服务器1 mysql配置1.5.4 从服务器2 mysql配置1.5.5 测试 1.6 主从复制的3种同步模式1.6.1 异步复制&a…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果