This commit is contained in:
youngyangyang04
2021-09-05 23:19:48 +08:00
parent b880bac080
commit b2c6d5078a
31 changed files with 1336 additions and 80 deletions

View File

@@ -7,7 +7,7 @@
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 701.二叉搜索树中的插入操作
# 701.二叉搜索树中的插入操作
[力扣题目链接](https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/)
@@ -24,7 +24,7 @@
* -10^8 <= val <= 10^8
* 新值和原始二叉搜索树中的任意节点值都不同
## 思路
# 思路
其实这道题目其实是一道简单题目,**但是题目中的提示:有多种有效的插入方式,还可以重构二叉搜索树,一下子吓退了不少人**,瞬间感觉题目复杂了很多。
@@ -195,7 +195,7 @@ public:
};
```
## 总结
# 总结
首先在二叉搜索树中的插入操作,大家不用恐惧其重构搜索树,其实根本不用重构。
@@ -204,9 +204,10 @@ public:
最后依然给出了迭代的方法,迭代的方法就需要记录当前遍历节点的父节点了,这个和没有返回值的递归函数实现的代码逻辑是一样的。
## 其他语言版本
# 其他语言版本
## Java
Java
```java
class Solution {
public TreeNode insertIntoBST(TreeNode root, int val) {
@@ -253,7 +254,7 @@ class Solution {
}
```
Python
## Python
**递归法** - 有返回值
@@ -267,7 +268,8 @@ class Solution:
if root.val > val:
root.left = self.insertIntoBST(root.left, val) # 递归创建左子树
return root
```
```
**递归法** - 无返回值
```python
class Solution:
@@ -294,7 +296,8 @@ class Solution:
return
__traverse(root, val)
return root
```
```
**迭代法**
与无返回值的递归函数的思路大体一致
```python
@@ -326,7 +329,7 @@ class Solution:
```
Go
## Go
递归法
@@ -343,8 +346,10 @@ func insertIntoBST(root *TreeNode, val int) *TreeNode {
}
return root
}
```
迭代法
```
迭代法
```go
func insertIntoBST(root *TreeNode, val int) *TreeNode {
if root == nil {
@@ -370,9 +375,9 @@ func insertIntoBST(root *TreeNode, val int) *TreeNode {
}
```
JavaScript版本
## JavaScript
> 有返回值的递归写法
有返回值的递归写法
```javascript
/**
@@ -404,7 +409,7 @@ var insertIntoBST = function (root, val) {
};
```
> 无返回值的递归
无返回值的递归
```javascript
/**
@@ -444,7 +449,7 @@ var insertIntoBST = function (root, val) {
};
```
> 迭代
迭代
```javascript
/**