186.二叉树:二叉搜索树中的插入操作(力扣)

代码解决

/*** 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){TreeNode* node = new TreeNode(val);return node;}// 如果新值小于当前节点的值,递归地插入到左子树中if(val < root->val){root->left = insertIntoBST(root->left, val);}// 如果新值大于当前节点的值,递归地插入到右子树中if(val > root->val){root->right = insertIntoBST(root->right, val);}// 返回当前节点return root;}
};

代码使用了递归的方法。主要思路是首先判断当前节点是否为空,如果是,创建一个新节点并返回。然后,根据新值与当前节点的值的关系,递归地在左子树或右子树中插入这个新值。

这里简要解释一下代码的工作流程:

  1. 首先判断当前节点是否为空,如果为空,创建一个新节点并返回。
  2. 如果新值小于当前节点的值,递归地插入到左子树中。
  3. 如果新值大于当前节点的值,递归地插入到右子树中。
  4. 返回当前节点。

这个算法的时间复杂度是 O(h),其中 h 是树的高度。在最坏的情况下,可能需要遍历整个树来找到合适的位置插入新值。空间复杂度也是 O(h),因为需要存储递归调用的栈。

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

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

相关文章

pytest + yaml 框架 -61.jenkins+allure+钉钉通知添加测试结果

前言 上一篇pytest + yaml 框架 -60.git+jenkins+allure+钉钉通知反馈 已经实现测试结果用钉钉通知。 本篇继续在钉钉通知里添加测试的汇总结果,此功能在pytest-yaml-yoyo v1.5.2版本上实现。 Environment Injector 插件 在运行完用例后会生成一个summary.json 文件,汇总…

护眼台灯哪个品牌更好?五款市面主流的护眼台灯款式分享

近年来&#xff0c;护眼台灯的研发和创新不断推进&#xff0c;一些台灯配备了智能化功能&#xff0c;如定时开关机、自动调节光线等&#xff0c;使孩子们能够更好地控制用眼时间和光线环境。护眼台灯哪个品牌更好&#xff1f;一些高端的护眼台灯还采用了纳米光滤镜技术&#xf…

誉天5月红帽战报:恭喜14名学员通过RHCE认证,通过率87.5%!

红帽认证是全球公认的Linux权威认证之一&#xff0c;对于Linux从业者来说具有很高的价值和认可度。旨在评估考生在Linux系统管理和应用方面的专业知识和技能。红帽考试是Linux从业者提升自身技能水平和职业竞争力的重要途径之一。 5月份&#xff0c;誉天14名学员通过了RHCE认证…

Python基础教程(十九):网络编程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【深度学习】基于注意力机制的多实例学习(MIL)图像分类

1. 引言 1.1.研究背景 在图像分类任务中&#xff0c;我们通常持有一个直观的假设&#xff0c;即每张图像都可以清晰无误地归属于一个特定的类别标签。然而&#xff0c;在医学成像领域&#xff0c;特别是在计算病理学等复杂的应用中&#xff0c;情况则有所不同。在这些情况下&…

值类型之Hello翻身当类型了

值类型 TypeScript 规定&#xff0c;单个值也是一种类型&#xff0c;称为“值类型”。 let Zakun: "hello";Zakun "hello"; // 正确 // Zakun "world"; // 报错上面示例中&#xff0c;变量Zakun的类型是字符串hello&#xff0c;导致它只能赋…

Midjourney提示词终极指南(完整版)

在这篇博客中&#xff0c;我们深入研究了使用提示的艺术&#xff0c;以利用Midjourney的AI功能的力量。我们将探索各种技术&#xff0c;以创建个性化和迷人的图像&#xff0c;将你的创意想法转变为令人惊叹的视觉杰作。 1. 了解提示词 提示是简短的文字描述或关键词&#xff…

基于Spring+Vue的前后端分离的计算器

麻雀虽小&#xff0c;五脏俱全 需求分析 表达式求值 支持加减乘除四则运算、支持高精度 获取日志 Api文档定义 前后端分离&#xff0c;人不分离 通过Apifox定义接口细节&#xff0c;协调前后端开发工作。 软件架构设计 Spring-MVC 把软件系统分为三个基本部分&#xff1a;模…

跨国大文件传输需要哪些方面?怎么实现数据快速传输?

跨国大文件传输涉及到许多方面&#xff0c;包括网络速度、安全性、可靠性和法律合规性等。 以下是跨国大文件传输时需要考虑的一些重要方面&#xff1a; 高速稳定的网络连接&#xff1a;确保有足够的带宽和稳定的网络连接以支持大文件的快速传输。这可能需要考虑到跨国网络的延…

岩土工程乙级资质下的风险管理与责任需求

1. 技术风险管理 地质勘察准确性&#xff1a;确保勘察数据的准确性和完整性&#xff0c;避免因地质误判导致的设计错误或施工事故。技术方案评估&#xff1a;合理评估岩土工程方案的可行性&#xff0c;包括支护、加固、地基处理等&#xff0c;预防技术失误带来的风险。新技术应…

数字孪生火电厂:传统能源的数字化转型

通过图扑自主研发的产品 HT for Web &#xff0c;采用可视化与数字孪生技术&#xff0c;打造多样化设计风格和业务视角下的火电厂数字孪生方案。为智慧电厂综合“一张图”管理提供了上层展示技术支撑&#xff0c;助力企业增强对火电厂的信息化和数字化管理水平。

win11安装pycuda的一点点问题

问题&#xff1a;ERROR: Failed building wheel for pycuda C:\Users\97160\AppData\Local\Temp\pip-install-oi8pc0pg\pycuda_49ea4802a21a4336a69368c192f9cfce\src\cpp\cuda.hpp(23): fatal error C1083: 无法打开包括文件: “cudaProfiler.h”: No such file or directoryC…

用android如何实现计算机计算功能

一.新建一个项目 步骤&#xff1a; 1.新建项目 2.选择 二.用户界面构建 找到项目的res的下面layout里面的activity.xml文件进行约束布局界面构建。 activity.xml代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.c…

Web前端进阶课程:深度剖析与全面突破

Web前端进阶课程&#xff1a;深度剖析与全面突破 在数字化浪潮席卷全球的今天&#xff0c;Web前端技术作为连接用户与互联网世界的桥梁&#xff0c;其重要性不言而喻。为了更好地满足市场对前端技能的高要求&#xff0c;Web前端进阶课程应运而生。本文将从四个方面、五个方面、…

电脑屏幕录制怎么录制?这7个录制屏幕的技巧值得一试!

电脑屏幕录制怎么录制&#xff1f;屏幕录制是什么? 简单地说&#xff0c;电脑屏幕录制就是在你的设备屏幕上录制视频。它可以捕捉屏幕上正在发生的事情&#xff0c;并让你与其他人分享。记录电脑、手机或笔记本电脑屏幕的原因有很多&#xff1a; 1. 一个简单的屏幕录制可以用…

STM32项目分享:智能大棚/智慧农业系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.co…

超全Midjourney自学教程,怒码1万3千字!这是我见过最良心的教程啦!

前段时间&#xff0c;后台有网友私信我&#xff0c;说想跟我一起学AI~当时一边开心一边惶恐&#xff0c;满足于被人看到自己的努力、又担心自己是不是教不好别人&#xff0c;毕竟我自己也是业余时间边学边发的那种~ 不过&#xff0c;我还是会继续搬运或整理一些我认为值得记录…

Spark学习——不同模式下执行脚本

举个简单的例子&#xff1a;使用spark官方用例"取pi值" 一、local模式 进入spark目录执行后台命令&#xff1a; bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[*] \ ./examples/jars/spark-examples_2.12-3.2.1.jar \ 10运行结…

七、IP路由原理和路由引入

目录 一、IP路由原理 二、路由引入 2.1、双点双向路由引入 2.2、路由回灌 三、路由策略与路由控制 路由匹配工具&#xff08;规则&#xff09; ACL IP前缀列表 路由控制工具&#xff08;控制&#xff09; 策略工具1 策略工具2 搭配组合 组…

理解Es的DSL语法(二):聚合

前一篇已经系统介绍过查询语法&#xff0c;详细可直接看上一篇文章&#xff08;理解DSL语法&#xff08;一&#xff09;&#xff09;&#xff0c;本篇主要介绍DSL中的另一部分&#xff1a;聚合 理解Es中的聚合 虽然Elasticsearch 是一个基于 Lucene 的搜索引擎&#xff0c;但…