#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
结构体定义的时候,结构体名也写错了。代码修改了一下,运行结果如下:
代码:
#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");
}