回 帖 发 新 帖 刷新版面

主题:关于二叉树的初级问题,求助!!!

#define null 0
#define error -1
#define ok 1
struct bitnode
{
    char data;
    struct bitnode *lchild;
    struct bitnode *rchild;
};

createtree(struct bitnode *r) /*建立二叉树*/
{

    char ch;
    scanf("%c",&ch);
    if(ch=='#') r=null;
    else
    {
        if(!(r=(struct bitnode *) malloc(sizeof(struct bitnode)))) return error;
          {
            r->data=ch;
            createtree(r->lchild);
            createtree(r->rchild);
          }

    }

}

display(struct bitnode *r)
{
    if(r!=null)
    {   printf("%c",r->data);
        if(r->lchild!=null||r->rchild!=null)
        {   printf("(");
            printf(r->lchild);
            if(r->rchild!=null)printf(",");
            printf(r->rchild);
            printf(")");
        }
    }

}
    


main()
{
    struct bitnode *ptree;
    ptree=(struct bitnode *) malloc (sizeof(struct bitnode));
    printf("Input the char:\n");
    createtree(ptree);
    display(ptree);
}
以上是我写的用链表实现的创建二叉树和输出二叉树的程序,可是为什么输出总是出错呢?急    

回复列表 (共1个回复)

沙发

createtree函数的问题。你想,一个普通变量作为函数参数可以带回一个值吗?不能。那么一级指针变量作为参数能带回地址值吗?显然也不能。你得使用二级指针作参数才能带回地址值。(或者使用一级指针变量的引用也行)

我来回复

您尚未登录,请登录后再回复。点此登录或注册