• + 0 comments

    if (!root) return nullptr; if (key < root->val) { root->left = deleteNode(root->left, key); } else if (key > root->val) { root->right = deleteNode(root->right, key); } else { // Node to be deleted found if (!root->left) { TreeNode* rightChild = root->right; delete root; return rightChild; } if (!root->right) { TreeNode* leftChild = root->left; delete root; return leftChild; }

        TreeNode* minNode = root->right;
        while (minNode->left) minNode = minNode->left;
        root->val = minNode->val;
        root->right = deleteNode(root->right, minNode->val);
    }
    return root;
    

    }