努力的二虎子 发表于 2021-11-16 19:24:23

麻烦大佬们看看问题到底出在哪??

这是创建一个完整的树,实现输入和输出,可问题是为什么就是输出不了呢,编译的时候都是没有错误的,看了好几遍,也没有发现问题的所在,求求大佬们看下给出答案吧{:10_266:} {:10_266:}
#include<stdio.h>
#include<stdlib.h>

typedef int ElementType;
typedef struct TNode
{
        ElementType data;
        struct TNode *leftchild;
        struct TNode *rightchild;
}TNode,*BinTree;

void CreatBinTree(BinTree T)
{
    ElementType num;
        scanf("%d",&num);
        if(num==0)
        {
                T=NULL;
        }
        else
        {
                T=(TNode *)malloc(sizeof(TNode));
                T->data=num;
                CreatBinTree(T->leftchild);
                CreatBinTree(T->rightchild);
        }

}

void PreorderTraverse(BinTree T)
{

                if(T)
        {
                printf("%d\n",T->data);
                PreorderTraverse(T->leftchild);
                PreorderTraverse(T->rightchild);
        }

}

int main()
{

        BinTree T;
    CreatBinTree(T);
        PreorderTraverse(T);
       
        return 0;
}

最终的执念 发表于 2021-11-16 21:00:32

这玩笑开不得啊

最终的执念 发表于 2021-11-16 21:24:58

#include<stdio.h>
#include<stdlib.h>

typedef int ElementType;
typedef struct TNode {
    ElementType data;
    struct TNode *leftchild;
    struct TNode *rightchild;
} TNode, *BinTree;

BinTree CreatBinTree() {
    BinTree T;
    ElementType num;
    scanf("%d", &num);
    if (num == 0) {
      return NULL;
    } else {
      T = malloc(sizeof (TNode));
      T->data = num;

      T->leftchild = CreatBinTree();
      T->rightchild = CreatBinTree();

    }

    return T;

}

void PreorderTraverse(BinTree T) {

    if (T) {
      printf("%d\n", T->data);
      PreorderTraverse(T->leftchild);
      PreorderTraverse(T->rightchild);
    }

}

int main() {

    BinTree T = CreatBinTree();
    PreorderTraverse(T);

    return 0;
}
   

最终的执念 发表于 2021-11-16 21:25:37

好像忘了释放内存.....

努力的二虎子 发表于 2021-11-16 23:39:12

最终的执念 发表于 2021-11-16 21:25
好像忘了释放内存.....

哈哈,还是感谢回答,原因我已经找到了,是函数里面指针的问题
页: [1]
查看完整版本: 麻烦大佬们看看问题到底出在哪??