java数据结构与算法刷题-----LeetCode701. 二叉搜索树中的插入操作

SAP-FICO LSMW实战:批量导入财务凭证与固定资产主数据(AS91)的完整指南 本文详细介绍了SAP-FICO中LSMW工具在批量导入财务凭证与固定资产主数据(AS91)的完整流程与实战技巧。从基础概念、环境准备到财务凭证导入全流程,特别针对AS91历史资产导入的日期逻辑和关键字段映射提供了专项指南,并分享了常见错误排查与性能优化建议,帮助用户高效完成SAP数据迁移任务。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 从根节点开始,比较结点值和插入值
  2. 如果比当前结点大,让其去右子树
  3. 如果比当前结点小,让其去左子树
  4. 这一步可选:题目说明,如果要插入的值,在当前结点位置也合理的话(比左子树大,比右子树小),可以替换当前结点的值

1. 递归模拟插入操作

代码:时间复杂度O(n),但因为递归需要栈,空间复杂度O(n).所以推荐使用迭代法

在这里插入图片描述

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root == null) return new TreeNode(val);//如果root为null,那么直接让val成为根结点返回
        dfs(root,val);//进入递归
        return root;
    }
    public void dfs(TreeNode root, int val) {
        if(val == root.val) return;//题目要求,不需要重复元素
        else if(root.val > val){//比当前结点小,就去左边
            if(root.left == null) root.left = new TreeNode(val);//如果当前节点左子树为null,让val成为新的左子树
            else insertIntoBST(root.left,val);//如果val不是新的左子树,说明node本身就有左子树,它需要继续去左子树比较
        } else if(root.val < val){//如果比当前结点大,就去右边
            if(root.right == null) root.right = new TreeNode(val);
            else insertIntoBST(root.right,val);
        }
    }
}

2. 迭代模拟插入操作

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

在这里插入图片描述

/**
 * 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;
 *     }
 * }
 */
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
        if(root == null) return new TreeNode(val);//如果root为null,那么直接让val成为根结点返回
        TreeNode node = root;//获取root,进行插入操作
        while(node!=null){//如果有的遍历
            if(val < node.val) {//比当前结点小,就去左边
                node.left = node.left == null?new TreeNode(val):node.left;//如果当前节点左子树为null,让val成为新的左子树
                if(node.left.val == val) break;//如果val成为新的左子树,说明val插入成功,可以返回了
                else node = node.left;//如果val不是新的左子树,说明node本身就有左子树,它需要继续去左子树比较
            }else{//如果比当前结点大,就去右边
                node.right = node.right == null?new TreeNode(val):node.right;
                if(node.right.val == val)break;
                else node = node.right;
            }
        }
        return root;
    }
    
}
中国土地市场网爬取 实习期间老板需要对土地数据进行爬取,想来想去就Google到了.应该算是种类最齐全的土地数据了。Github地址:https://github.com/AnTi-anti/china_land/tree/master。 阅读详情

相关推荐

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不兼容问题

本文针对在国产麒麟系统上安装Kettle时遇到的aarch64架构不兼容问题,提供了详细的解决方案。通过剖析错误根源,指导用户获取并放置正确的SWT库文件,并修改启动脚本,成功解决“平台不支持”的报错,确保ETL工具在ARM架构的国产化环境中顺利运行。

weixin_29214691的博客 278

LeetCode Java面试刷题笔记汇总

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

终生学习践行者 2948

iTunes登录协议抓包实战:绕过反检测与TLS解密的完整方案

在软件逆向与网络协议分析中,抓包工具扮演着关键角色。代理型工具如Fiddler通过修改系统代理实现HTTPS解密,而驱动型工具如HTTPDebugger则注入进程钩取网络API,但这些实现机制往往会被具有反检测策略的客户端识别。以iTunes登录协议为例,其内置证书锁定、进程完整性与系统代理检测等防护,导致常规抓包方案失效。从工具原理出发,对比不同抓包方案的暴露面,重点介绍如何利用Fiddler通过中间人代理获取明文流量,以及使用Wireshark进行被动监听规避检测的进阶技巧,并总结常见问题排查经验,为分

weixin_28607671的博客 367

【LeetCode刷题日记】一篇搞懂->701.二叉搜索树的插入操作

本文介绍了在二叉搜索树(BST)中插入新节点的两种方法。题目要求给定BST根节点和插入值,返回插入后的树结构。关键点在于利用BST特性:左子树值小于根节点,右子树值大于根节点。插入过程通过比较节点值决定向左或向右遍历,直到找到合适空位。 方法一采用递归实现,时间复杂度O(H)(H为树高),空间复杂度O(H)用于递归栈。方法二使用迭代方式,时间复杂度相同但空间优化至O(1)。两种方法都能正确处理空树情况,确保新节点插入后仍保持BST性质。文章通过具体示例(如插入值5到树[4,2,7,1,3])演示了插入过程,

任岁月风干理想再也找不回真的我 2067

如何利用东南大学齿轮箱数据集进行故障诊断?从数据采集到模型训练全流程解析

本文详细解析如何利用东南大学齿轮箱数据集进行故障诊断,涵盖从数据采集到模型训练的全流程。通过信号预处理、特征工程构建及多种机器学习模型对比,帮助开发者高效实现工业设备健康管理。特别适合希望将AI技术应用于工业场景的Python开发者。

m2n3b4v5c6的博客 378

基于Web的智能家居(源码+开题)

实践上,智能家居系统的普及和应用将极大改善人们的居住体验,提高生活质量,同时也有助于促进智能家居产业链的发展和完善,为社会经济发展注入新的活力。此外,本研究还将对基于Web的智能家居系统的用户体验进行深入研究,通过用户调研和数据分析,不断优化系统功能和界面设计,提升用户的使用体验和满意度。针对以上问题,本研究将综合运用物联网、云计算、大数据等新一代信息技术,通过系统架构设计、功能模块开发、安全性保障、用户体验优化等多个方面的研究工作,力求为基于Web的智能家居系统的研发和应用提供全面而有效的解决方案。

sryue06的博客 1904

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

树 二叉搜索树中的插入操作 1. 题目描述 难易度:中等 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和 插入的值: 5 你可以返回这个二叉搜索树: 4 / \ 2 7 / \ / 1

!不将就的博客 4083

Android CCodec (四) Output Buffer流程分析

Android 多媒体架构 Codec2 Output Buffer

给大佬递杯卡布奇诺的博客 3266

Java实现 LeetCode 701 二叉搜索树中的插入操作(遍历树)

701. 二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和 插入的值: 5 你可以返回这个...

南 墙 1万+

万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

这篇文章是图像处理的最后一篇文章,后面我们将进入新的章节。图像处理文章主要讲解的图像处理方法包括图像几何运算、图像量化采样、图像点运算、图像形态学处理、图像增强、图像平滑、图像锐化、图像特效、图像分割、傅里叶变换与霍夫变换、图像分类等。个人感觉如果你是编程初学者、Python初学者或图像处理爱好者,这个系列真心适合你学习,并且这篇文章算是Python图像处理的学习路线,希望您喜欢。

杨秀璋的专栏 2万+

基于VSCode+clangd插件打造高效C++开发环境之四:clangd配置

本文介绍如何配置VSCode+clangd插件进行高效C++开发。重点内容包括:1)生成compile_commands.json文件,通过ninja工具提取编译命令并使用gen_compdb脚本转换;2)配置clangd命令行参数,如设置后台索引、并行度等;3)编写.clangd配置文件,调整编译标志和诊断选项;4)添加.clang-format文件定义代码风格;5)在VSCode中添加远程服务器工作目录。配置完成后需重启clangd服务使更改生效。文章还提供了MTK/QCOM等不同平台生成compile

5072

代码随想录刷题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

uniapp - 解决报错Error in event handler for “service.requestComponentInfo“: “TypeError: cannot read prop

uniapp,报错,Error in event handler for "service.requestComponentInfo": "TypeError: cannot read properties of undefined (reading 'matches')",h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,如何解决这个问题,一直报错,uniapp报错Error,都检查了还是报错,怎么解决这个错误,uniapp出现Error in event han

🏆 前端领域优质创作者 6379

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

题目摘要: 在二叉搜索树(BST)中插入一个新节点,保持BST性质不变。给定BST的根节点root和待插入值val(保证与树中所有节点值不同),返回插入后的根节点。插入位置为遍历路径的第一个空节点处,无需调整树结构。 解法要点: 递归法:若当前节点为空则创建新节点;否则根据val与节点值的大小关系,递归处理左/右子树,并通过返回值更新父节点的子节点指针。 迭代法:遍历树直到找到空节点位置,记录其父节点pre,根据val与pre.val的关系插入左/右子树。 核心代码(递归示例): TreeNode inse

m0_68880377的博客 846

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构与算法——Java实现 50.力扣701题——二叉搜索树中的插入操作

给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据,新值和原始二叉搜索树中的任意节点值都不同。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回。

m0_73983707的博客 742

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

LeetCode二刷

weixin_43872997的博客 1153

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

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

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

本文详细解析了二叉搜索树(BST)的递归插入实现。通过递归方法,根据当前节点值与插入值的大小关系选择左/右子树继续查找,直到找到空位创建新节点。代码时间复杂度为O(h),h为树高,空间复杂度同样为O(h)。该算法充分利用BST的特性,在保持树结构的同时高效完成插入操作,是理解BST基础操作的重要示例。

mrjieke6的博客 911

【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】

【LeetCode:701. 二叉搜索树中的插入操作 + 二叉树】给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。

Coder_ljw的博客 877

【Leetcode刷题篇】leetcode701 二叉搜索树中的插入操作

题目:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。 思路:找到其父节点,对父节点的左右结点添加新节点即可 package com.lcz.leetcode; public class Leetcode701 { class TreeNode{ int val; .

Mind_programmonkey的博客 494

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

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

xiaoshiguang3的博客 612

力扣701 二叉搜索树中的插入操作 java实现

本文介绍了在二叉搜索树(BST)中插入新节点的算法。题目要求在保持BST性质的前提下,将给定值插入树中并返回根节点。算法采用递归方法:若当前节点为空则创建新节点;否则根据值大小比较决定向左或向右子树递归。由于不要求平衡,只需遵循BST规则即可。文中提供了Java实现代码,包含测试用例和详细注释,时间复杂度为O(h),其中h为树的高度。该解法简洁高效,适用于各种BST插入场景。

m0_58648798的博客 1039

力扣刷题701 二叉搜索树中的插入操作 java版

题目链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/ 思路:插入的节点永远要插在叶子节点或者度为1的节点后面,关键就是要找到父结点看插在谁的后面,找到以后根据大小判断左右就好。 寻找父结点时,找到有位置放val的父结点即可,可以是叶子节点,也可以是val插入的地方正好是空的节点。 package 二叉搜索树; /** * https://leetcode-cn.com/problems/insert-into-a-b

qq_42474833的博客 198

【每日力扣】40.组合总和II与701. 二叉搜索树中的插入操作

🔥 个人主页:😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害。

m0_69383623的博客 1069

LeetCode701——二叉搜索树中的插入操作

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/description/ 题目描述: 知识点:二分搜索树 思路一:递归实现 由于二分搜索树天然的递归结构,很多和二分搜索树有关的算法都可以用...

清风阁 1449
上一篇: java数据结构与算法刷题-----LeetCode236. 二叉树的最近公共祖先
下一篇: java数据结构与算法刷题-----LeetCode450. 删除二叉搜索树中的节点
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、付费专栏及课程。

余额充值