二叉树删除一个结点,直接在找到的节点处删除为什么不可以

我的代码


void  BiTree::del(BiNode* bt,char ch){
    // if(root==NULL) return;
    // if(root->data==ch){
    //     root=NULL;
    //     return;
    // }
    // if(bt->lchild!=NULL){
    //     if(bt->lchild->data==ch) bt->lchild=NULL;
    //     else del(bt->lchild,ch);
    // }
    // if(bt->rchild!=NULL){
    //     if(bt->rchild->data==ch) bt->rchild=NULL;
    //     else del(bt->rchild,ch);
    // }
    // return;
  if(bt==NULL) return;
    if(bt->data==ch){
        p=NULL;
        return;
    } 
    else{
        del(bt->lchild,ch);
        del(bt->rchild,ch);
    }
    return;
}


注释掉的地方是可以通过的,我就像问一下为什么下面那种写法不能实现删除结点呢?
下面写法的大抵思路是,如果这个结点是要找的数据就删除,否则就查找左右子树。为空就返回