|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 番茄 于 2014-3-20 00:54 编辑
- /************************本遍历操作实现为中序遍历*************************/
- #include<stdio.h>
- #include<malloc.h>
- struct bitnode //定义二叉树
- {
- char data;
- struct bitnode *lchild,*rchild;
- };
- void preordertraverse(struct bitnode *t);
- struct bitnode *create(struct bitnode *root);
- void visit(struct bitnode *e);
- struct bitnode *root;
- int main()
- {
- struct bitnode *pt;
- pt=create(root);
- preordertraverse(pt);
- return 0;
- }
- /**************************创建二叉树***************************************/
- struct bitnode *create(struct bitnode *root)
- {
- struct bitnode *p; //定义节点变量
- int n;
- root=NULL; //根节点初始化
- p=(struct bitnode *)malloc(sizeof(bitnode)); //输入根节点信息
- if(!(p=(struct bitnode *)malloc(sizeof(bitnode))))
- goto end;
- else
- {
- printf("请输入节点信息 : \n");
- scanf("%d",p->data);
- root=p;
- printf("请输入执行命令 : \n 1:继续 ! 2:结束!"); //控制是否结束构建
- scanf("%d",&n);
- if(n==2) goto end;
- else
- {
- create(p->lchild); //递归调用create函数实现左边,右边的子树的遍历
- create(p->rchild);
- }
- }
- end:
- return root;
- }
- /************************定义visit函数***********************/
- void visit(struct bitnode *e)
- {
- printf("地址 : %o,data : %d, left pointer : %o, right pointer : %o\n",e,e->data,e->lchild,e->rchild);
- }
- /************************定义中序遍历函数**********************************/
- void preordertraverse(struct bitnode *t)
- {
- if(t)
- {
- visit(t);
- preordertraverse(t->lchild);
- preordertraverse(t->rchild);
- }
- }
复制代码
|
|