二叉树的创建并输出,有标准的c语言版和加入c++引用的版本(因为数据结构教材多采用这种办法,相对c语言版的方便点)
c语言版的:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
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\n",p->data);
output(p->lchild);
output(p->rchild);
}
}
int main()//主函数
{
BTNode *p=NULL;
printf("please input data:");
create(&p);
output(p);
return 0;
}
输入的时候务必注意,不能随意乱输入,要考虑树的结构.
下面是加入了c++的引用的版本: