Moon_quakes_xi 2022-05-01 16:09 采纳率: 66.7%
浏览 12
已结题

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

我的代码


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;
}


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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月9日
    • 创建了问题 5月1日