#include <stdio.h>
#include <stdlib.h>
//二叉树的链式存储定义
typedef struct BiNode
{
char data;
struct BiNode *lchild, *rchild;
} BiNode, *BiTree;
int main()
{
BiTree T;
int CreateBiTree(BiTree * T);
int Pre(BiTree T);
int In(BiTree T);
int Post(BiTree T);
printf("请输入你要遍历的二叉树(#为空):");
CreateBiTree(&T);
printf("\n二叉树先序遍历结果:");
Pre(T);
printf("\n二叉树中序遍历结果:");
In(T);
printf("\n二叉树后序遍历结果:");
Post(T);
printf("\n");
return 0;
}
//创建二叉树,先序序列
int CreateBiTree(BiTree *T)
{
char ch;
scanf("%c", &ch);
if (ch == '#')
*T = NULL;
else
{
*T = (BiTree)malloc(sizeof(BiNode));
if (!*T)
exit(-1);
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
return 0;
}
//先序遍历二叉树,指向根结点的指针T
int Pre(BiTree T)
{
if (T != NULL)
{
printf("%c ", T->data);
Pre(T->lchild);
Pre(T->rchild);
}
return 0;
}
//中序遍历二叉树
int In(BiTree T)
{
if (T != NULL)
{
In(T->lchild);
printf("%c ", T->data);
In(T->rchild);
}
return 0;
}
//后序遍历二叉树
int Post(BiTree T)
{
if (T != NULL)
{
Post(T->lchild);
post(T->rchild);
printf("%c ", T->data);
}
return 0;
}
二叉树的三种遍历(c语言)
于 2022-05-23 21:16:00 首次发布

36万+

被折叠的 条评论
为什么被折叠?



