前言
题目: 701. 二叉搜索树中的插入操作
文档: 代码随想录——二叉搜索树中的插入操作
编程语言: 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 {
private:
TreeNode* parent;
void traversal(TreeNode* cur, int val) {
if (!cur) {
TreeNode* node = new TreeNode(val);
if (val > parent -> val) {
parent -> right = node;
} else {
parent -> left = node;
}
return;
}
parent = cur;
if (cur -> val > val) traversal(cur -> left, val);
if (cur -> val < val) traversal(cur -> right, val);
return;
}
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
parent = new TreeNode(0);
if (!root) {
root = new TreeNode(val);
}
traversal(root, val);
return root;
}
};