力扣日记1.10-【二叉树篇】701. 二叉搜索树中的插入操作

力扣日记:【二叉树篇】701. 二叉搜索树中的插入操作

日期:2024.
参考:代码随想录、力扣
——————————————————————
天哪,上次打开力扣还是2023,转眼已经2024?!
两个星期过去了!!整整摸了两个星期啊!!!(跪地,忏悔,阴暗爬行___||||||)

701. 二叉搜索树中的插入操作

题目描述

难度:中等

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。

注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。

示例 1:
在这里插入图片描述

输入:root = [4,2,7,1,3], val = 5
输出:[4,2,7,1,3,5]
解释:另一个满足题目要求可以通过的树是:
在这里插入图片描述

示例 2:

输入:root = [40,20,60,10,30,50,70], val = 25
输出:[40,20,60,10,30,50,70,null,null,25]

示例 3:

输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
输出:[4,2,7,1,3,5]

提示:

  • 树中的节点数将在 [0, 10^4]的范围内。
  • -10^8 <= Node.val <= 10^8
  • 所有值 Node.val 是 独一无二 的。
  • -10^8 <= val <= 10^8
  • 保证 val 在原始BST中不存在。

题解

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        // 被吓怕了,直接去看答案了啊啊啊啊
        // 不考虑题目中提示所说的改变树的结构的插入方式,
        // 只要遍历二叉搜索树,找到空节点 插入元素就可以了
        if (root == nullptr) {
            return new TreeNode(val);   // 遇到空节点,则创建节点并返回给上一层作为其子节点
        }
        if (val < root->val) {
            root->left = insertIntoBST(root->left, val);    // 递归返回插入该元素后该子树的根节点
        } else if (val > root->val) {
            root->right = insertIntoBST(root->right, val);  // 同理,递归返回插入该元素后该子树的根节点
        }
        return root;
        
    }
    
};

复杂度

时间复杂度:
空间复杂度:

思路总结

  • 最关键的:不考虑题目中提示所说的改变树的结构的插入方式
  • 只要遍历二叉搜索树,找到空节点 插入元素就可以了!!!
  • 只要遍历二叉搜索树,找到空节点 插入元素就可以了!!!
  • 只要遍历二叉搜索树,找到空节点 插入元素就可以了!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试|如何在Linux中下载和安装软件包

简介 在Linux操作系统中&#xff0c;下载和安装软件包是一项基本任务。不同的Linux发行版可能有不同的包管理工具和方式&#xff0c;但总体流程是类似的。以下是在Linux中下载和安装软件包的详细步骤。 步骤1&#xff1a;选择适当的包管理工具 因为Linux有不同的发行版本&am…

代码随想录算法训练营第23天 | 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

669. 修剪二叉搜索树 题目链接&#xff1a; 669. 修剪二叉搜索树 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二…

Vue与后端交互、生命周期

一&#xff1a;Axios 1.简介 ① Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中 ② axios官网&#xff1a;axios中文网|axios API 中文文档 | axios 2.实例 json文件&#xff1a;film.json&#xff08;这里只是一部分&#xff0c;原代码太多…

语义解析:如何基于SQL去实现自然语言与机器智能连接的桥梁

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 语义解析 定义 作用 语义解析的应用场景 场景一&#xff1a; 场景二&#xff1a; 总结语…

RISC-V是如何与X86、ARM三分天下

目录 1.行业CPU指令集格局 2.汽车中的RISC-V进展 2.1 国际进展 2.2 国内进展 3.小结 2023年3月2日&#xff0c;在平头哥牵头举办的玄铁RISC-V生态大会上&#xff0c;工程院院士倪光南表示&#xff0c;基于RISC-V模块化、可扩展、容易定制、不受垄断制约等优势&#xff0c;…

山羊目标检测数据集VOC格式290张

山羊&#xff0c;一种聪明而机敏的哺乳动物&#xff0c;以其独特的形态和特点而受到人们的喜爱。 山羊的体型中等&#xff0c;四肢强健&#xff0c;有着坚硬的蹄子和浓密的毛发。它们的头部较大&#xff0c;有着一对弯曲的角&#xff0c;角上有很多节状突起。山羊的毛色多为棕…

美国生物医学博士后最低年薪有望涨至7万美元

2023年底&#xff0c;美国国立卫生研究院&#xff08;NIH&#xff09;咨询小组发布了一份报告&#xff0c;建议将生物医学领域博士后的最低起薪从目前的56 484美元/年提高到70 000美元/年。知识人网小编结合我们了解到的情况&#xff0c;整理文章如下。 去年&#xff0c;我们知…

浅析NVMe key per IO加密技术-2

二、Key per IO功能设置的流程 设置Key Per I/O功能需要对NVMe存储设备进行一系列配置&#xff0c;涉及多个步骤和能力要求。以下是一个简化的流程概述&#xff1a; 硬件支持&#xff1a;首先&#xff0c;NVMe固态硬盘支持Key Per I/O技术&#xff0c;并且了解相关的NVM Expre…

使用 OpenAI 自定义 API 提高电商平台的推荐精度

一、引言 在当今的电商时代&#xff0c;推荐系统已成为影响用户购买决策的关键因素之一。为了提供更精准的推荐&#xff0c;许多电商平台纷纷寻求先进的技术支持。OpenAI 自定义 API 正是这样一种强大而灵活的工具&#xff0c;能够通过自然语言处理和机器学习技术&#xff0c;…

C++上位软件通过Snap7开源库访问西门子S7-200/LOGO PLC/合信M226ES PLC V存储区的方法

前言 在前面例程中谈到了C 通过Snap7开源库S7通信库跟西门子S7-1200PLC/S7-1500PLC以及合信CTMC M226ES PLC/CPU226 PLC通信的方式方法和应用例程。但是遗憾的是Snap7中根据官方资料显示只能访问PLC的 DB区、MB区、C区、T区 、I区、Q区&#xff0c;并没有提到有关如何访问S7-20…

SpringBoot+Hutool实现图片验证码

图片验证码在注册、登录、交易、交互等各类场景中都发挥着巨大作用&#xff0c;能够防止操作者利用机器进行暴力破解、恶意注册、滥用服务、批量化操作和自动发布等行为。 创建一个实体类封装&#xff0c;给前端返回的验证码数据&#xff1a; Data public class ValidateCodeV…

PyCharm使用手册

配置文件和代码模板 文件注释模板&#xff1a; 注释项描述示例Project项目名称hello_pythonFile文件名称hello_python.pyAuthor作者Zhang SanDate创建时间2024-01-11 17:05:00PyVersionPython解释器版本Python3.7Description文件描述这是一个python语言入门文件 效果示例&am…

【SSO】统一授权中心v1.0.0版本正式上线(多租户)

目录 背景 体验 技术栈 菜单 示例 背景 为了方便权限管理、用户登录授权、应用授权等&#xff0c;特地开发了当前的统一授权中心。 体验 邮箱注册即可登录体验 后台系统&#xff1a;https://sso.behappyto.cn/#/switch 技术栈 vue3tsspringbootmybatismysql 菜单 …

【2023回顾】2024,放马过来吧

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 &#x1f438;哈哈虽然不是技术文&#x…

idea 设置文件头

idea 设置创建文件时自动添加文档注释信息 /** * Description * Author jimaomao * DATE ${DATE} ${TIME} */

第11届电气与电子工程国际会议(ICEEE 2024)即将召开!

2024年第11届电气与电子工程国际会议(ICEEE 2024)将于2024年4月22-24日在土耳其马尔马里斯召开。随着电气和电子工程领域取得的重大进步&#xff0c;ICEEE也迈向未来&#xff0c;有了更多令人兴奋的发展。本次会议旨在促进对该领域最新技术进步、新兴趋势和创新理念的讨论&…

ARP协议详解

1、ARP协议的定义 地址解析协议(Address Resolution Protocol&#xff0c;ARP)&#xff1a;ARP协议可以将IPv4地址(一种逻辑地址)转换为各种网络所需的硬件地址(一种物理地址)。换句话说&#xff0c;所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系。 ARP仅用于IPv…

Ubuntu 卸载重装 Nvidia 显卡驱动

问题描述 我使用 airsim 的时候&#xff0c;发现 UE4 没法使用显卡&#xff0c;导致非常卡顿 输入 nvidia-smi 有显卡型号等信息的输出&#xff0c;但是进程 process 里面没有显示 airsim 和其他软件占用显卡情况 因此&#xff0c;我选择了卸载重装 一.卸载旧版本的驱动 …

回归测试?

1. 什么是回归测试&#xff08;Regression Testing&#xff09; 回归测试是一个系统的质量控制过程&#xff0c;用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响&#xff08;比如你在家中安装了新的空调系统&#xff0c;发现虽然新的空…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑧

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷8 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷8 模块一 …