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

news/2025/1/12 20:53:03/

给定二叉搜索树(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, 104]的范围内。
  • -108 <= Node.val <= 108
  • 所有值 Node.val 是 独一无二 的。
  • -108 <= val <= 108
  • 保证 val 在原始BST中不存在。

//被终止条件搞蒙了。并不用提前一位判断,而应该就当前节点判断。

class Solution {
public:TreeNode* insert(TreeNode* root,int val){if(!root){ // 不能!root->left && !root->right。因为,这样会破坏原来结构TreeNode* node = new TreeNode(val);return node;}if(root->val < val){root->right = insert(root->right,val);}if(root->val > val){root->left = insert(root->left,val);}return root;}TreeNode* insertIntoBST(TreeNode* root, int val) {//模拟得:只在叶子结点插入。//1、找到合适得叶子结点//2、插入return insert(root,val);}
};

//迭代 

class Solution {
public:TreeNode* insertIntoBST(TreeNode* root, int val) {//迭代TreeNode* cur = root;TreeNode* pre = nullptr;while(cur){pre = cur;if(cur->val > val) cur = cur->left;else if(cur->val < val) cur = cur->right;}TreeNode* node = new TreeNode(val);if(pre && pre->val < val){pre->right = node;}else if(pre && pre->val > val){pre->left = node;}else{return node;}return root;}
};


http://www.ppmy.cn/news/1142088.html

相关文章

【用MyEclipse2017创建一个Hibernate Web登录项目】

用MyEclipse2017创建一个Hibernate Web登录项目 靠手工实现JavaBean/JDBC的系统 Hibernate自动生成了所需的JavaBean&#xff0c;也取代了原JDBC的功能&#xff01;可简单形象地理解为&#xff1a;Hibernate&#xff1d;JavaBean&#xff0b;JDBC 1、创建一个Java EE Web项目…

arthas 监控线程池相关对象

具体代码&#xff0c;需要设置类的变量&#xff0c;不能设置方法的局部变量 package com.xxx.vman.service;import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.junit.Test;import java.util.concurrent.LinkedBlockingQueue; import java.util.concu…

【python】python虚拟环境--20231008

https://blog.csdn.net/m0_69023493/article/details/129158656 安装好python和pip 略 新建python虚拟空间 安装virtualenv pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple安装virtualenvwrapper-win&#xff08;可选&#xff09; pip install vir…

vuejs中使用axios时如何追加数据

前言 在vuejs中使用axios时&#xff0c;有时候需要追加数据,比如,移动端下拉触底加载,分页加载,滑动滚动条,等等,这时候就需要追加数据了,下面我们来演示下. 代码演示 <template><div><div><el-button type"primary" click"handleBtnGetJ…

【C++ unordered_set、unordered_map】

目录 一、哈希1.1哈希--开散列1.2哈希--闭散列1.3哈希的优化 二、unordered_set、unordered_map2.1unordered_set、unordered_map的框架搭建2.2unordered_set、unordered_map的迭代器2.2.1普通迭代器的构造2.2.2普通迭代器的封装2.2.3unordered_set普通迭代器的封装2.2.4unorde…

route和router的区别,怎么定义vue-router的动态路由?怎么获取传过来的值

route和router的区别 route&#xff08;路由&#xff09;和router&#xff08;路由器&#xff09;是在计算机网络和网络编程中常用的两个术语&#xff0c;它们有一些相似之处&#xff0c;但也存在一些区别。 1. Route&#xff08;路由&#xff09;&#xff1a; 路由&#xf…

ELK集群 日志中心集群

ES&#xff1a;用来日志存储 Logstash:用来日志的搜集&#xff0c;进行日志格式转换并且传送给别人&#xff08;转发&#xff09; Kibana:主要用于日志的展示和分析 kafka Filebeat:搜集文件数据 es-1 本地解析 vi /etc/hosts scp /etc/hosts es-2:/etc/hosts scp /etc…

百面机器学习书刊纠错

百面机器学习书刊纠错 P243 LSTM内部结构图 2023-10-7 输入门的输出 和 candidate的输出 进行按元素乘积之后 要和 遗忘门*上一层的cell state之积进行相加。