You are given the root
node of a binary search tree (BST) and a value
to insert into the tree. Return the root node of the BST after the insertion. It is guaranteed that the new value does not exist in the original BST.
Notice that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return any of them.
Example 1:
Input: root = [4,2,7,1,3], val = 5
Output: [4,2,7,1,3,5]
Explanation: Another accepted tree is:
Example 2:
Input: root = [40,20,60,10,30,50,70], val = 25
Output: [40,20,60,10,30,50,70,null,null,25]
Example 3:
Input: root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
Output: [4,2,7,1,3,5]
基本思路,按照bst的检索准则,左子树的元素都比根结点小,右子树的节点都比根结点大,然后把需要插入的结点放到树的尾端。
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
// recursion
return digui(root,val);
}
TreeNode* digui(TreeNode* node,int val){
// recursion insert to the bottom of the bst
if(node==nullptr){
TreeNode* cur=new TreeNode(val);
return cur;
}
int tmp=node->val;
if(tmp>val){
node->left=digui(node->left,val);
}
else{
node->right=digui(node->right,val);
}
return node;
}
};