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日

    悬赏问题

    • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
    • ¥15 怎么看我在bios每次修改的日志
    • ¥15 python+mysql图书管理系统
    • ¥15 Questasim Error: (vcom-13)
    • ¥15 船舶旋回实验matlab
    • ¥30 SQL 数组,游标,递归覆盖原值
    • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
    • ¥20 gitlab 中文路径,无法下载
    • ¥15 用动态规划算法均分纸牌
    • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据