每日一题~二叉搜索树中的插入操作

news2024/9/30 9:34:45

题目链接:701. 二叉搜索树中的插入操作 - 力扣(LeetCode)

题目描述:

思路分析:由题可知,题目的要求是给我们一个二叉搜索树和一个 val,将这个 val 插入到二叉搜索树中,并且这个树仍然是二叉搜索树。题目中给了两个插入方式,第一种是将 val 插入到原来没有节点的位置;第二种是,将 val 替换掉已经存在的节点,然后重新调整树。通过观察发现第一种方法比第二种更加简单,所以我们接下来就根据第一种方法进行解答。

插入 val 节点总共需要两步:

1、寻找 val 节点插入的位置, 因为题目中的树是一个二叉搜索树,所以如果 root.val < val ,那么 val 应该插到右子树那边,我们只需要在右子树中再寻找合适的位置就可以了,如果 root.val > val, 那么从左子树中再寻找位置就可以。

2、插入 val 节点,如何确定这个位置是我们要找的位置呢?由第一步可以知道,我们是从 root 节点开始向下找,所以当 root = null 时,说明我们已经找到了那个位置,这时候我们直接返回到上一个节点,如果此时 root.left == null && root.val > val,那么直接将 val 添加到 root.left 就可以,注意右边的情况和左边判断时一样,不能直接使用 else,如果直接使用 else,那么在回溯到中间的时候会将 val 重新添加到其他节点的右子树。

代码示例:

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root == null) return new TreeNode(val);
        search(root,val);
        return root;
    }
    public void search(TreeNode root,int val) {
        if(root == null) return;
        if(root.val > val) {
            // 在左子树继续寻找
            search(root.left,val);
        }else {
            search(root.right,val);
        }
        if(root.left == null && root.val > val) {
            root.left = new TreeNode(val);
        }else if(root.right == null && root.val < val){
            root.right = new TreeNode(val);
        }
       
    }
}

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

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

相关文章

新型BI解决方案:SaaS BI,在浏览器上分析数据

在当今数字化时代&#xff0c;企业需要处理海量数据以制定精确的业务策略。然而&#xff0c;传统BI工具的繁琐安装和配置过程&#xff0c;让许多企业望而却步。幸运的是&#xff0c;一种新型的商业智能&#xff08;BI&#xff09;解决方案——SaaS BI系统&#xff0c;解决了这个…

戴口罩 目标检测数据集-12000张

今天要介绍的数据集则是戴口罩 目标检测数据集&#xff1a; 数据集名称&#xff1a;戴口罩 目标检测数据集 数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;以…

面试常谈的Binder理解,每个人都不一样~

面试官提了一个问题&#xff0c;我们来看看 &#x1f60e;、&#x1f628; 和 &#x1f914;️ 三位同学的表现如何吧 &#x1f60e; 自认为无所不知&#xff0c;水平已达应用开发天花板&#xff0c;目前月薪 10k 面试官️&#xff1a;谈谈你对 binder 的理解 &#x1f60e;&a…

Topaz Photo AI for Mac 图像智能ai降噪工具

Topaz Photo AI是一款基于人工智能技术的图像编辑软件&#xff0c;它可以帮助用户提升照片质量&#xff0c;使外观更加清晰锐利。这款软件不仅可作为独立的软件使用&#xff0c;也可作为Photoshop的插件&#xff0c;以及能在Lightroom Classic、Capture One中调用。 Topaz Pho…

【Android】关于Activity的onSaveInstanceState生命周期

最近笔者求职时面试一家大厂&#xff0c;被问到Activity的生命周期&#xff0c;其中面试官着重问了onSaveInstanceState的调用是在onStop之前还是之后&#xff0c;本人当时有点蒙圈&#xff0c;之前也没有关注它到底是在OnStop之前还是之后。 但是这个方法在什么时候调用的重要…

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

Centos7原生hadoop环境&#xff0c;搭建Impala集群和负载均衡配置 impala介绍 Impala集群包含一个Catalog Server (Catalogd)、一个Statestore Server (Statestored) 和若干个Impala Daemon (Impalad)。Catalogd主要负责元数据的获取和DDL的执行&#xff0c;Statestored主要负…

电商领域五强对比:Amazon、eBay、Wish、Target、Newegg,谁更胜一筹?(测评补单)

随着互联网的快速发展&#xff0c;电子商务成为了现代消费的主要方式。在众多电商平台中&#xff0c;Amazon、eBay、Wish、Target、Newegg是备受瞩目的电商巨头。它们在全球范围内拥有庞大的用户群体&#xff0c;提供了丰富的商品选择和便捷的购物体验。本文将对这些电商平台进…

Python网页信息爬取脚本

文章目录 获取整个页面所有源码筛选出源码中图片地址将图片下载到本地完整脚本 获取整个页面所有源码 该步骤可以用requests模块实现&#xff0c;分为下面步骤&#xff1a; 定义一个URL 地址; 发送HTTP 请求&#xff1b; 处理HTTP 响应。 下面代码定义了一个get_Html方法&…

jenkins中添加sonnarqube与OWASP Dependency-Check

jenkins jenkins离线插件地址&#xff1a; http://updates.jenkins-ci.org/download/plugins https://updates.jenkins.io/download/plugins https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins 国内linux 安装jdk11 文档&#xff1a; https://blog.51cto.co…

流量狂飙!暴涨2000万播放成B站创作标杆

“民以食为天”&#xff0c;美食品类内容是人们日常生活所需延伸出来的一个内容版块&#xff0c;用户浏览量大、众多内容创作者并驱争先&#xff0c;一直到今天&#xff0c;所有人有目共睹美食内容是如何在“内卷”。 饶是如此赛道拥挤的美食圈&#xff0c;也有众多创作者不断…

java字符串压缩和字符串解压

java字符串压缩和字符串解压 运行效果 java工具类 CompressUtil.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import org.apache.commons.codec.binary.Base64;import java.io.BufferedReader; import java.io.Byte…

【LeetCode-中等题】116. 填充每个节点的下一个右侧节点指针

文章目录 题目方法一&#xff1a;直接让每层不是最后一个的节点指向此时队首元素方法二&#xff1a;用list记录下每层的节点 然后再做链接 题目 方法一&#xff1a;直接让每层不是最后一个的节点指向此时队首元素 class Solution {public Node connect(Node root) {if(root nu…

健身完全手册

文章目录 饮食完全手册摄入总量日内分配来源和配餐方法专题&错误 训练完全手册训练分化动作模式胸背手肩腿臀腹训练计划 减脂完全手册胸肌训练&#xff08;原理动作计划饮食&#xff09;健身训练的分化、动作、配重体态大师 饮食完全手册 参考视频&#xff1a;&#x1f4a…

什么是Web浏览器的缓存机制?如何控制和清除浏览器缓存?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Web浏览器的缓存机制⭐ 浏览器缓存的工作原理⭐ 控制和清除浏览器缓存控制缓存 ⭐ 清除缓存⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xf…

YashanDB混合存储揭秘:行式存储如何为高效TP业务保驾护航(上)

上一篇文章《深度干货 | 揭秘YashanDB融合存储引擎》 https://mp.weixin.qq.com/s/yipJcEAH3fVA-_hnUvOiKA从存储结构、事务引擎、高可用等方面介绍了YashanDB存储引擎的整体架构。本篇为大家详细解读YashanDB行式存储技术。 背景 数据库底层组织数据的方式主要分为行式存储和…

成集云 | 金蝶云星空集成聚水潭ERP(金蝶云星空主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件&#xff08;中国&#xff09;有限公司研发的新一代战略性企业管理软件&#xff0c;致力于为企业提供端到端的供应链整体解决方案&#xff0c;它可以帮助企业构建敏捷供应链体系&#xff0c;降低供应链成本&#xff0c;提…

The existence and uniqueness of weak solution

See https://zhuanlan.zhihu.com/p/67522044 https://math.stackexchange.com/questions/1213260/what-is-a-good-definition-of-a-weak-solution

「聊设计模式」之模板方法模式(Template Method)

&#x1f3c6;本文收录于《聊设计模式》专栏&#xff0c;专门攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎持续关注&&收藏&&订阅&#xff01; 前言 在软件开发中&#xff0c;设计模式是经典的解决方案&#…

广州某机械制造企业生产工序管理系统解决方案

RFID工序管理解决方案在生产工序中引入RFID技术&#xff0c;对生产工序的构件拼装、焊接、打磨后检测、打砂油漆后检测、构件拟装读取确认、项目管理人员收货确认等各个生产环节的数据进行自动化的数据采集&#xff0c;保证生产管理各个作业环节数据输入的效率和准确性&#xf…

如何防止数据库泄露,保障个人信息安全题

在数字化时代&#xff0c;个人信息安全和数据库安全至关重要。为了防止数据库泄露&#xff0c;保障个人信息安全&#xff0c;以下安策带来的一些建议&#xff1a; 1.强化密码管理 密码是保护个人信息安全的第一道防线。确保使用复杂且独特的密码&#xff0c;避免使用容易猜测或…