其他分享
首页 > 其他分享> > 701. 二叉搜索树中的插入操作

701. 二叉搜索树中的插入操作

作者:互联网

✅做题思路or感想:

这里的插入值的操作不是在节点和节点直接插一个新节点,而是在老的二叉树的末尾新增节点。。。

故这里直接利用二叉搜索树的特性直接找新节点位置就好了

值得注意的是这里是需要让前一个节点链接新节点,也就是存在父子节点之间的赋值操作,所以这里要记录上一个节点!!!

class Solution {
public:
    //这里要多一个参数:记录上一个节点
    void dfs(TreeNode* root, int val, TreeNode* pre) {
        if (root == nullptr) {	//如果发现合适位置的空位,则添加至此
            root = new TreeNode(val);
            //上一个节点要把这个节点链接上
            if (pre->val > val)pre->left = root;
            if (pre->val < val)pre->right = root;
            return;
        }
        //根据二叉搜索树的性质来递归
        if (root->val > val)dfs(root->left, val, root);
        if (root->val < val)dfs(root->right, val, root);
    }
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        if (root != nullptr)	//谨防奇怪测试用例,真的离谱
        dfs(root, val, nullptr);
        else root = new TreeNode(val);
        return root;
    }
};

标签:pre,TreeNode,val,树中,701,dfs,二叉,root,节点
来源: https://www.cnblogs.com/doomaa/p/16077876.html