读书人

生成二叉树有关问题

发布时间: 2012-03-20 14:01:11 作者: rapoo

生成二叉树问题
#include <stdio.h>
#include <stdlib.h>

struct TreeNode
{
char data;
TreeNode*lchild;
TreeNode*Rchild;
};


void ProCreate(TreeNode*p)//先序遍历生成二叉树
{
char a;
printf( "请输入字符: ");
scanf( "%c ",&a);
getchar();
if (a== '! ') p=NULL;
else
{
p=(TreeNode*)malloc(sizeof(TreeNode));
p-> data=a;
ProCreate(p-> lchild);
ProCreate(p-> Rchild);


}

return;
}

void ProVist(TreeNode*p)//先序遍历
{

if (p!=NULL)
{
printf( "%c\n ",p-> data);

ProVist(p-> lchild);
ProVist(p-> Rchild);
}
return;


}


main(void)
{
TreeNode *p=NULL;
ProCreate(p);
ProVist(p);

}

这段程序有问题,但是在不知道错在哪里,请各位大哥帮帮忙看看,感激不禁

[解决办法]
#include <stdio.h>
#include <stdlib.h>

struct TreeNode
{
char data;
struct TreeNode* lchild;
struct TreeNode* Rchild;
};


void ProCreate(struct TreeNode **p)//先序遍历生成二叉树
{
char a;
printf( "请输入字符: ");
scanf( "%c ",&a);
getchar();
if (a== '! ') *p=NULL;
else
{
(*p)=(struct TreeNode*)malloc(sizeof(struct TreeNode));
(*p)-> data=a;
ProCreate(&(*p)-> lchild);
ProCreate(&(*p)-> Rchild);
}
return;
}

void ProVist(struct TreeNode *p)//先序遍历
{
if (p!=NULL)
{
printf( "%c\n ",p-> data);

ProVist(p-> lchild);
ProVist(p-> Rchild);
}
return;
}

int main()
{
struct TreeNode *p=NULL;
ProCreate(&p);
ProVist(p);
system( "PAUSE ");
return 0;
}

读书人网 >C语言

热点推荐