Loading

【leetcode】701. Insert into a Binary Search Tree

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;
    }
};
posted @ 2022-01-12 18:19  aalanwyr  阅读(28)  评论(0编辑  收藏  举报