生成二叉树有关问题
生成二叉树问题
#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;
}
#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;
}