鱼C论坛

 找回密码
 立即注册
查看: 4088|回复: 10

遍历二叉树 小程序的问题

[复制链接]
发表于 2013-4-18 20:43:25 | 显示全部楼层 |阅读模式
10鱼币
  1. 又是我啦  这次是二叉树的问题  编译都木有问题了 (电脑说是没问题 error和warning都是0  但是 运行的时候 就是不给力!输入好了 一回车  就不往下执行了 黑框还卡那了  都研究一下午 这个小树苗了 还是无能为力  可耐的 鱼友们 快来帮帮我  能把我眉头压平了 让我恢复人类的摸样 我大大的给加分!!吼吼!!)
复制代码
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define NULL 0
  4. typedef struct BiTNode
  5. {
  6.         char data;//结点的数据域
  7.         struct BiTNode *lchild,*rchild;//结点的左右子树
  8. }BiTNode,*Bitree;
  9. create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素
  10. {
  11.         char c;//二叉树里的元素都是字符
  12.         scanf("%c",&c);
  13.         if(c==' ')//空格代表 NULL
  14.                 *p=NULL;
  15.         else
  16.         {
  17.                 *p=(BiTNode*)malloc(sizeof(BiTNode));
  18.                 (*p)->data=c;
  19.         }
  20.        
  21.     create_Bitree(&((*p)->lchild));//递归了!结点升级为根继续输入
  22.         create_Bitree(&((*p)->rchild));
  23. }
  24. void visite(char c)
  25. {
  26.         printf("%c",c);
  27. }
  28. int  preorder(Bitree * p)//前序遍历输出 二叉树中所有元素
  29. {
  30.         if(*p==NULL)
  31.                 return NULL;
  32.         visite((*p)->data);
  33.     preorder(&((*p)->lchild));
  34.         preorder(&((*p)->rchild));
  35.         return 1;
  36. }
  37. int  inorder(Bitree * p)//中序遍历输出 二叉树中所有元素
  38. {
  39.     if(*p==NULL)
  40.                 return NULL;
  41.        
  42.     preorder(&((*p)->lchild));
  43.     visite((*p)->data);
  44.         preorder(&((*p)->rchild));
  45.         return 1;
  46. }
  47. int  postorder(Bitree * p)//后序遍历输出 二叉树中所有元素
  48. {
  49.     if(*p==NULL)
  50.                 return NULL;
  51.        
  52.     preorder(&((*p)->lchild));
  53.    
  54.         preorder(&((*p)->rchild));
  55.         visite((*p)->data);
  56.         return 1;
  57. }

  58. void main()
  59. {
  60.         BiTNode *p;
  61.         printf("请输入二叉树中所有元素(请以前序遍历的顺序输入)\n");
  62.     create_Bitree(&p);
  63.         printf("请以前序遍历的顺序输出二叉树中所有的元素:\n");
  64.         preorder(&p);
  65.         printf("请以中序遍历的顺序输出二叉树中所有的元素:\n");
  66.         inorder(&p);
  67.         printf("请以后序遍历的顺序输出二叉树中所有的元素:\n");
  68.         postorder(&p);
  69.         system("pause");
  70. }
复制代码

最佳答案

查看完整内容

改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-18 20:43:26 | 显示全部楼层
  1. create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素

  2. {

  3.         char c;//二叉树里的元素都是字符

  4.         c = getchar();

  5.         //scanf("%c",&c);

  6.         if(c==' ')//空格代表 NULL
  7.                 {
  8.                 *p=NULL;
  9.                                 return ;
  10.                 }
  11.         else

  12.         {

  13.                 *p=(BiTNode*)malloc(sizeof(BiTNode));

  14.                 (*p)->data=c;

  15.         }



  16.     create_Bitree(&((*p)->lchild));//递归了!结点升级为根继续输入

  17.     create_Bitree(&((*p)->rchild));

  18. }
复制代码
改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-18 22:12:28 | 显示全部楼层
都混到这份上了 自己抢自己沙发 都木有人吗  都跑哪鬼混去啦  不误正业
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-18 23:28:08 | 显示全部楼层
兄弟的代码逻辑都正确,开始我还没看懂
有一点小问题,修改如下
  1. void create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素
  2. {
  3.         char c;//二叉树里的元素都是字符
  4.         _flushall();
  5.         scanf("%c",&c);
  6.         if(c==' ')//空格代表 NULL
  7.         {
  8.                 *p=NULL;
  9.                 return;
  10.         }
  11.         else
  12.         {
  13.                 *p=(BiTNode*)malloc(sizeof(BiTNode));
  14.                 (*p)->data=c;
  15.         }

  16.         create_Bitree(&((*p)->lchild));//递归了!结点升级为根继续输入
  17.         create_Bitree(&((*p)->rchild));
  18. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-19 10:22:35 | 显示全部楼层

哥们 厉害!那啥 不知道是不是我这电脑的问题诶  我要吧清除缓存区的函数去掉才能正确运行出来 不知道你的是不是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-19 10:23:19 | 显示全部楼层
小亮1201 发表于 2013-4-18 22:45
改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。

谢谢!!嘿嘿 不过输入的那个 咱俩的一样 不改也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-19 16:39:28 | 显示全部楼层
我是来领鱼币了的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-20 21:08:37 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-7 17:09:16 | 显示全部楼层
以前编过,不过2年前了,忘记了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-17 10:29:36 | 显示全部楼层
我复制你这串代码粘贴怎么跟你最初的错误一样呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-29 11:06:44 | 显示全部楼层
学习学习一下~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 02:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表