This commit is contained in:
youngyangyang04
2020-08-14 09:56:25 +08:00
parent 304e409f48
commit a54a31a5a9
5 changed files with 70 additions and 43 deletions

View File

@@ -3,11 +3,35 @@ https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
## 思路
其实这道题目是一道很简单的题目,**但是题目中的提示:有多种有效的插入方式,还可以重构二叉搜索树,一下子吓退了不少人**,瞬间感觉题目复杂了很多。
其实**可以不考虑题目中提示所说的改变树的结构的插入方式。**
如下演示视频中可以看出:只要按照二叉搜索树的规则去遍历,遇到空节点就插入节点就可以了。
例如插入元素10 需要找到末尾节点插入便可一样的道理来插入元素15插入元素0插入元素6**需要调整二叉树的结构么? 并不需要。**只需要遍历二叉搜索树,找到空节点 插入元素就可以了, 那么这道题其实就非常简单了。
<video src='../video/701.二叉搜索树中的插入操作.mp4' controls='controls' width='640' height='320' autoplay='autoplay'> Your browser does not support the video tag.</video></div>
接下来就是遍历二叉搜索树的过程了。
代码如下:
## C++代码
### 递归
```
/**
* 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) {
@@ -24,6 +48,10 @@ public:
### 迭代
在来看看迭代法
在迭代法遍历的过程中,需要记录一下当前遍历的节点的父节点,这样才能做插入节点的操作。
```
class Solution {
public: