鱼C论坛

 找回密码
 立即注册
查看: 3600|回复: 7

二叉树遍历出了点问题,求指点

 关闭 [复制链接]
发表于 2014-11-23 11:50:14 | 显示全部楼层 |阅读模式
10鱼币
创建二叉树用递归是没问题了,遍历递归错哪了?问题出在bianli(t)上
#include<stdio.h>

#include<stdlib.h>
typedef struct tree 
{
char a;
struct tree *l,*r;                 //左右孩子
}tree;

tree *creat(tree *t) //设置根为t的二叉树
{
tree *p;
char c;
p=(tree *)malloc(sizeof(tree));
t=p;
scanf("%c",&c);
if(' '==c)
{ p=NULL;

}

else
{
p->a=c;
creat(p->l);
creat(p->r);
}
return t;
}

void bianli(tree *t) 
{ 
if(t==NULL)printf("_"); //用下标表示空
else 
{
printf("%c\n",t->a);
bianli(t->l);
bianli(t->r);
}
}


void main()
{
tree *t;
t=creat(t);
bianli(t);


}

最佳答案

查看完整内容

应该使用指向指针的指针,而且creat函数里p = NULL 和 p=(tree *)malloc(sizeof(tree)); 有点问题,我改了下,使用 t = creat(&t); tree *creat(tree **t) //设置根为t的二叉树 { tree *p; char c; fflush(stdin); scanf("%c",&c); if(' '==c) { *t = NULL; } else { p = (tree *)malloc(sizeof(tree)); *t=p; p->a=c; printf("请输入 %c 结点的左子树结点: ", p->a); creat(&p->l); ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-23 11:50:15 | 显示全部楼层
应该使用指向指针的指针,而且creat函数里p = NULL 和 p=(tree *)malloc(sizeof(tree)); 有点问题,我改了下,使用 t = creat(&t);
tree *creat(tree **t) //设置根为t的二叉树
{
        tree *p;
        char c;

        fflush(stdin);
        scanf("%c",&c);
        if(' '==c)
        {
                *t = NULL;
        }
       
        else
        {
                p = (tree *)malloc(sizeof(tree));
                *t=p;
                p->a=c;
                printf("请输入 %c 结点的左子树结点: ", p->a);
                creat(&p->l);
                printf("请输入 %c 结点的右子树结点: ", p->a);
                creat(&p->r);
        }
        return *t;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 11:58:29 | 显示全部楼层
是因为没用二重指针吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 12:25:07 | 显示全部楼层
果然是没用二重指针的原因,测试了一下知道原来是创建二叉树时候出的岔子
void main()

{

tree *t;

t=creat(t);
printf("%c\n",t->a);
printf("%c\n",t->l);
printf("%c\n",t->r);





}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 13:12:09 | 显示全部楼层
自己找到答案了,小甲鱼老师视频里一带而过,二重指针的用法,找到了篇帖子
http://blog.csdn.net/sdfgh2046/article/details/5647913
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 13:17:25 | 显示全部楼层
漠水 发表于 2014-11-23 13:12
自己找到答案了,小甲鱼老师视频里一带而过,二重指针的用法,找到了篇帖子
http://blog.csdn.net/sdfgh20 ...

如果看到这个帖子第一个回复,那我就直接给分了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-12-2 20:00:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-14 18:36:52 | 显示全部楼层
有qq吗,加我qq聊聊 85183299
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表