c言語作成と出力ツリー
ツリーの作成と出力には、標準的なc言語版とc++参照を加えたバージョンがあります(データ構造教材はこの方法が多く採用されているため、c言語版に比べて便利です)
c言語版:
以下は、c++の参照が追加されたバージョンです.
c言語版:
#include
#include
#include
typedef struct BTNode//
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void create(BTNode **p)// , '^'
{
char a;
a=getchar();//12^3^^4^^
if(a=='^')
*p=NULL;
else
{
*p=(BTNode *)malloc(sizeof(BTNode));
(*p)->data=a;
create(&((*p)->lchild));
create(&((*p)->rchild));
}
return;
}
void output(BTNode *p)//
{
if(p)
{
printf("%c
",p->data);
output(p->lchild);
output(p->rchild);
}
}
int main()//
{
BTNode *p=NULL;
printf("please input data:");
create(&p);
output(p);
return 0;
}
入力の際は注意が必要で、むやみに入力することはできません.ツリーの構造を考慮してください.以下は、c++の参照が追加されたバージョンです.
#include
#include
#include
typedef struct BTNode//
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void create(BTNode *&p)// , '^'
{
char a;
a=getchar();//12^3^^4^^
if(a=='^')
p=NULL;
else
{
p=(BTNode *)malloc(sizeof(BTNode));
p->data=a;
create(p->lchild);
create(p->rchild);
}
return;
}
void output(BTNode *p)//
{
if(p)
{
printf("%c
",p->data);
output(p->lchild);
output(p->rchild);
}
}
int main()//
{
BTNode *p=NULL;
printf("please input data:");
create(p);
output(p);
return 0;
}