C语言的二叉树中序遍历问题。

[复制链接]
查看11 | 回复1 | 2011-5-10 06:20:57 | 显示全部楼层 |阅读模式
代码如下。
#includestdio.h
#includemalloc.h

typedefstructnode
{
        intdata;
        structnode*lchl,*rchl;
}NODE;

voidcreate(NODE*t)        //建立
{
        inta;
        scanf(\"%d\",
        if(a)
        {
        t=(NODE*)malloc(sizeof(NODE));
        t-data=a;
        create(t-lchl);
        create(t-rchl);
        }
        else
                t=NULL;
}

voidprint(NODE*T)                //中序遍历
{
        if(T)
        {
        print(T-lchl);
        printf(\"M\",T-data);
        print(T-rchl);
        }
}

voidmain()
{
        NODE*root;
        create(root);
        print(root);
}


录入完数据后总是提示内存不能为read,什么原因造成的?
回复

使用道具 举报

千问 | 2011-5-10 06:20:57 | 显示全部楼层
#includestdio.h
#includemalloc.h

typedefstructnode
{
        intdata;
        structnode*lchl,*rchl;
}        NODE;

NODE*create(NODE*t)        //函数带有返回值以影响调用者
{
        inta;
        scanf(\"%d\",
        if(a)
        {
                t=(NODE*)malloc(sizeof(NODE));
                t-data=a;
                t-lchl=create(t-lchl);
                t-rchl=create(t-rchl);
                returnt;                                //此处返回刚才申请单元的指针t
        }
        else
                returnNULL;                        //无子树返回NULL
}

voidprint(NODE*T)                //中序遍历
{
        if(T)
        {
                print(T-lchl);
                printf(\"M\",T-data);
                print(T-rchl);
        }
}

voidmain()
{
        NODE*root;
        root=create(root);//接收返回值
        print(root);
        printf(\"\\n\");               
}

//关键就是你没理解子程序中改变的值不一定能影响调用者环境中变量的
//值得,常见的方法有引用,指针,全局变量,这里二叉树用这种指针返回值,调用者
//接收返回值来达到影响的目的,比较好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行