权志龙_爱死你la 发表于 2013-4-18 20:43:25

遍历二叉树 小程序的问题

又是我啦这次是二叉树的问题编译都木有问题了 (电脑说是没问题 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);
}
intpreorder(Bitree * p)//前序遍历输出 二叉树中所有元素
{
        if(*p==NULL)
                return NULL;
        visite((*p)->data);
    preorder(&((*p)->lchild));
        preorder(&((*p)->rchild));
        return 1;
}
intinorder(Bitree * p)//中序遍历输出 二叉树中所有元素
{
    if(*p==NULL)
                return NULL;
       
    preorder(&((*p)->lchild));
    visite((*p)->data);
        preorder(&((*p)->rchild));
        return 1;
}
intpostorder(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");
}

小亮1201 发表于 2013-4-18 20:43:26

create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素

{

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

      c = getchar();

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

      if(c==' ')//空格代表 NULL
                {
                *p=NULL;
                                return ;
                }
      else

      {

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

                (*p)->data=c;

      }



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

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

}
改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。

权志龙_爱死你la 发表于 2013-4-18 22:12:28

都混到这份上了 自己抢自己沙发 都木有人吗都跑哪鬼混去啦不误正业{:5_100:}

小新110 发表于 2013-4-18 23:28:08

兄弟的代码逻辑都正确,开始我还没看懂
有一点小问题,修改如下
void create_Bitree(Bitree * p)//前序遍历的顺序输入二叉树中的所有元素
{
        char c;//二叉树里的元素都是字符
        _flushall();
        scanf("%c",&c);
        if(c==' ')//空格代表 NULL
        {
                *p=NULL;
                return;
        }
        else
        {
                *p=(BiTNode*)malloc(sizeof(BiTNode));
                (*p)->data=c;
        }

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

权志龙_爱死你la 发表于 2013-4-19 10:22:35

小新110 发表于 2013-4-18 23:28 static/image/common/back.gif
兄弟的代码逻辑都正确,开始我还没看懂
有一点小问题,修改如下

哥们 厉害!那啥 不知道是不是我这电脑的问题诶我要吧清除缓存区的函数去掉才能正确运行出来 不知道你的是不是?

权志龙_爱死你la 发表于 2013-4-19 10:23:19

小亮1201 发表于 2013-4-18 22:45 static/image/common/back.gif
改了下楼主二叉树的创建函数,可以运行出来。代码仅供参考。

谢谢!!嘿嘿 不过输入的那个 咱俩的一样 不改也行

y290176346 发表于 2015-9-19 16:39:28

我是来领鱼币了的

东河 发表于 2015-9-20 21:08:37

看看

鱼C工作室.YCGZS 发表于 2015-12-7 17:09:16

以前编过,不过2年前了,忘记了

buhuigeng 发表于 2015-12-17 10:29:36

我复制你这串代码粘贴怎么跟你最初的错误一样呢

susijie0021 发表于 2015-12-29 11:06:44

学习学习一下~
页: [1]
查看完整版本: 遍历二叉树 小程序的问题