c语言创建并输出二叉树

来源:互联网 发布:mysql增删改查sql语句 编辑:程序博客网 时间:2024/05/21 05:44

二叉树的创建并输出,有标准的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++的引用的版本:

#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;}


0 0
原创粉丝点击