Sodaoo 2016-11-19 23:47 采纳率: 100%
浏览 960
已采纳

一个二叉树的建立,不知道哪里错了呢

 void create(BiTree *T) {
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        *T = NULL;
    else {
        *T = (BiTree)malloc(sizeof(BiNode));
        if(*T) {
            (*T)->data = ch;
            create(&(*T)->lchild);
            create(&(*T)->rchild);
        }
        else return ;
    }
}

上面是正确的代码
为什么不能用下面的这片???

void create(BiTree T) {
    char ch;
    scanf("%c",&ch);
    if(ch=='#')
        T = NULL;
    else {
        T = (BiTree)malloc(sizeof(BiNode));
        if(T) {
            T->data = ch;
            create(T->lchild);
            create(T->rchild);
        }
        else return ;
    }
} 
  • 写回答

8条回答 默认 最新

  • OPMR 2016-11-20 05:26
    关注

    之前的void create(BiTree T)这里,T是形式参数传进去的,在create的子函数里进行的操作,是对形式参数的操作,子函数结束时就都释放了,不会返回到主函数
    void create(BiTree *T)这里,用到了指针指向T的地址,相当于对T的地址的操作,是一直有效的
    也可以写成(BiTree *&T)下面都用T
    这里涉及C语言指针的相关知识

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧