if (root->left == NULL || root->right == NULL) {
// 叶结点时 left 和 right 都是 NULL。
// 因而 child 也为 NULL。
BSTNode *child = root->left != NULL ? root->left : root->right;
free(root);
// 返回 NULL,让父结点对应的 left/right 被改为空。
return child;
}