mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-13 22:35:09 +08:00
Update
This commit is contained in:
50
problems/0701.二叉搜索树中的插入操作.md
Normal file
50
problems/0701.二叉搜索树中的插入操作.md
Normal file
@ -0,0 +1,50 @@
|
||||
## 题目地址
|
||||
https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
|
||||
|
||||
## 思路
|
||||
|
||||
|
||||
## C++代码
|
||||
|
||||
### 递归
|
||||
```
|
||||
class Solution {
|
||||
public:
|
||||
TreeNode* insertIntoBST(TreeNode* root, int val) {
|
||||
if (root == NULL) {
|
||||
TreeNode* node = new TreeNode(val);
|
||||
return node;
|
||||
}
|
||||
if (root->val > val) root->left = insertIntoBST(root->left, val);
|
||||
if (root->val < val) root->right = insertIntoBST(root->right, val);
|
||||
return root;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### 迭代
|
||||
|
||||
```
|
||||
class Solution {
|
||||
public:
|
||||
TreeNode* insertIntoBST(TreeNode* root, int val) {
|
||||
if (root == NULL) {
|
||||
TreeNode* node = new TreeNode(val);
|
||||
return node;
|
||||
}
|
||||
TreeNode* cur = root;
|
||||
TreeNode* parent = root; // 这个很重要,需要记录上一个节点,否则无法赋值新节点
|
||||
while (cur != NULL) {
|
||||
parent = cur;
|
||||
if (cur->val > val) cur = cur->left;
|
||||
else cur = cur->right;
|
||||
}
|
||||
TreeNode* node = new TreeNode(val);
|
||||
if (val < parent->val) parent->left = node;// 此时是用parent节点的进行赋值
|
||||
else parent->right = node;
|
||||
return root;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
> 更多算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。
|
Reference in New Issue
Block a user