一个先序建立二叉树的程序,出了问题
#include<stdio.h>#include<stdlib.h>
struct Tree{
char ch;
struct Tree* leftptr;
struct Tree* rightptr;
};
typedef struct Tree tree;
tree* topptr;
void create_tree(tree*T,int n)
{
char a;
scanf("%c",&a);
if(a!='*')
{
T=(tree*)malloc(sizeof(tree));
T->ch=a;
if(n==0) topptr=T;
create_tree(T->leftptr,1);
create_tree(T->rightptr,1);
}
else T=NULL;
}
void print(tree*T)
{
if(T!=NULL)
{
printf("%c\n",T->ch);
print(T->leftptr);
print(T->rightptr);
}
else printf("*\n");
}
main()
{
tree* tempptr;
printf("请输入字符\n");
create_tree(tempptr,0);
print(topptr);
system("pause");
return 0;
}
输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号。我先输入字母建立,再先序输出,但结果是无限输出问号