题目描述
给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。
代码
递归法
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root == nullptr) {
TreeNode* node = new TreeNode(val);
return node;
}
if (val < root->val)
root->left = insertIntoBST(root->left, val);
else if (val > root->val)
root->right = insertIntoBST(root->right, val);
return root;
}
};
迭代法
class Solution {
public:
void insert(TreeNode* node, int val) {
TreeNode* insertNode = new TreeNode(val);
while (node) {
if (node->val > val) {
if (node->left == nullptr) {
node->left = insertNode;
return;
}
else node = node->left;
}
else if (node->val < val) {
if (node->right == nullptr) {
node->right = insertNode;
return;
}
else node = node->right;
}
}
}
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root == nullptr) return new TreeNode(val);
insert(root, val);
return root;
}
};