为什么创建的二叉树输出不了?


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

typedef struct Node {
    char data;          
    struct Node* Lchild;       //左孩子
    struct Noed* Rchild;       //右孩子
}BiTNode, *BiTree;

//创建二叉树
void CreateBiTree(BiTree* T)
{
    char a;
    printf("请输入元素:");
    a = getchar();
    scanf("%c", &a);
    if (a=='#')
    {
        *T = NULL;
    }
    else
    {
        *T= (BiTree)malloc(sizeof(BiTNode));
        (*T)->data = a;
        CreateBiTree(&(*T)->Lchild);
        CreateBiTree(&(*T)->Rchild);
    }
}

//先序遍历
void PreOrder(BiTree T)
{
    if (T!= NULL)
    {
        printf("&c", T->data);
        PreOrder(T->Lchild);
        PreOrder(T->Rchild);
    }
}
//中序遍历
void InOrder(BiTree T)
{
    if (T != NULL)
    {
        InOrder(T->Lchild);
        printf("&c", T->data);
        InOrder(T->Rchild);
    }
}
//后序遍历
void PostOrder(BiTree T)
{
    if (T != NULL)
    {
        PostOrder(T->Lchild);
        PostOrder(T->Rchild);
        printf("&c", T->data);
    }
}
int main()
{
    BiTree T = NULL;
    CreateBiTree(T);
    printf("先序遍历");
    PreOrder(T);
    printf("\n");
    printf("中序遍历");
    InOrder(T);
    printf("\n");
    printf("后序遍历");
    PostOrder(T);
    printf("\n");
}

创建二叉树函数里 scanf("%c", &a); 改成 getchar();
遍历的时候 &c改成%c
结构体定义的时候,结构体名也写错了。代码修改了一下,运行结果如下:

img

代码:


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
    char data;          
    struct Node* Lchild;       //左孩子
    struct Node* Rchild;       //右孩子
}BiTNode, *BiTree;
//创建二叉树
void CreateBiTree(BiTree* T)
{
    char a;
    printf("请输入元素:");
    a = getchar();
    getchar();
    //scanf("%c", &a);
    if (a=='#')
    {
        *T = NULL;
    }
    else
    {
        *T= (BiTree)malloc(sizeof(BiTNode));
        (*T)->data = a;
        (*T)->Lchild = NULL;
        (*T)->Rchild = NULL;
        CreateBiTree(&(*T)->Lchild);
        CreateBiTree(&(*T)->Rchild);
    }
}
//先序遍历
void PreOrder(BiTree T)
{
    if (T!= NULL)
    {
        printf("%c", T->data);
        PreOrder(T->Lchild);
        PreOrder(T->Rchild);
    }
}
//中序遍历
void InOrder(BiTree T)
{
    if (T != NULL)
    {
        InOrder(T->Lchild);
        printf("%c", T->data);
        InOrder(T->Rchild);
    }
}
//后序遍历
void PostOrder(BiTree T)
{
    if (T != NULL)
    {
        PostOrder(T->Lchild);
        PostOrder(T->Rchild);
        printf("%c", T->data);
    }
}
int main()
{
    BiTree T = NULL;
    CreateBiTree(&T);
    printf("先序遍历");
    PreOrder(T);
    printf("\n");
    printf("中序遍历");
    InOrder(T);
    printf("\n");
    printf("后序遍历");
    PostOrder(T);
    printf("\n");
}



您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632