mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
Update
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user