开发者社区> 问答> 正文

二叉树的插入与删除 C语言 : 配置报错

 我写了个二叉树的插入程序,可是不知为什么,对于二叉树根结点的左边子树有效,右边的无效。比如

展开
收起
kun坤 2020-06-03 14:38:47 591 0
1 条回答
写回答
取消 提交回答
  • 应该是递归出差,无法正确退出每一层递归。 最好贴出代码。另外推荐画图工具:最简单的ppt,专业点的visio,当然还有别的,希望别画得这么累。######美术功力有待提高啊。。。######上此我已经说过了。从上次的代码中,你的树的递归操作有问题。导致都只能对左边和自己的结点赋值。自然右边无效。

    ###### BiTree Insert_L(BiTree bt, char x, BiTree parent)     //二叉树的左插入函数 {     BiTree p;     if(parent==NULL)     {         printf("\n插入错误");         return NULL;     }

        if((p=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)         return NULL;     p->data=x;     p->lchild=NULL;     p->rchild=NULL;

        //这里只给父亲节点的左子树赋值怎么可能在c节点的右边加上f节点呢?     //如果改成下面就可以了     /*     if(parent->rchild == NULL)         parent->rchild = p;     else     {         p->lchild = parent->rchild;         parent->rchild = p;     }     */     if(parent->lchild==NULL)         parent->lchild=p;     else     {         p->lchild=parent->lchild;         parent->lchild=p;     }     return bt; } 构造你的例子中的树的输入是: a b d 0 0 e 0 0 c 0 0 插入f节点: 9  f f 被插入到 c的左子树位置, ######感谢你这热心的网友,人间有真情啊

    2020-06-04 13:27:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载