|
10鱼币
- 又是我啦 这次是二叉树的问题 编译都木有问题了 (电脑说是没问题 error和warning都是0 但是 运行的时候 就是不给力!输入好了 一回车 就不往下执行了 黑框还卡那了 都研究一下午 这个小树苗了 还是无能为力 可耐的 鱼友们 快来帮帮我 能把我眉头压平了 让我恢复人类的摸样 我大大的给加分!!吼吼!!)
复制代码- #include<stdio.h>
- #include<stdlib.h>
- #define NULL 0
- typedef struct BiTNode
- {
- char data;//结点的数据域
- struct BiTNode *lchild,*rchild;//结点的左右子树
- }BiTNode,*Bitree;
- create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素
- {
- char c;//二叉树里的元素都是字符
- scanf("%c",&c);
- if(c==' ')//空格代表 NULL
- *p=NULL;
- else
- {
- *p=(BiTNode*)malloc(sizeof(BiTNode));
- (*p)->data=c;
- }
-
- create_Bitree(&((*p)->lchild));//递归了!结点升级为根继续输入
- create_Bitree(&((*p)->rchild));
- }
- void visite(char c)
- {
- printf("%c",c);
- }
- int preorder(Bitree * p)//前序遍历输出 二叉树中所有元素
- {
- if(*p==NULL)
- return NULL;
- visite((*p)->data);
- preorder(&((*p)->lchild));
- preorder(&((*p)->rchild));
- return 1;
- }
- int inorder(Bitree * p)//中序遍历输出 二叉树中所有元素
- {
- if(*p==NULL)
- return NULL;
-
- preorder(&((*p)->lchild));
- visite((*p)->data);
- preorder(&((*p)->rchild));
- return 1;
- }
- int postorder(Bitree * p)//后序遍历输出 二叉树中所有元素
- {
- if(*p==NULL)
- return NULL;
-
- preorder(&((*p)->lchild));
-
- preorder(&((*p)->rchild));
- visite((*p)->data);
- return 1;
- }
- void main()
- {
- BiTNode *p;
- printf("请输入二叉树中所有元素(请以前序遍历的顺序输入)\n");
- create_Bitree(&p);
- printf("请以前序遍历的顺序输出二叉树中所有的元素:\n");
- preorder(&p);
- printf("请以中序遍历的顺序输出二叉树中所有的元素:\n");
- inorder(&p);
- printf("请以后序遍历的顺序输出二叉树中所有的元素:\n");
- postorder(&p);
- system("pause");
- }
复制代码
|
最佳答案
查看完整内容
改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。
|