//遍历二叉树
#include<stdio.h>
#include<stdlib.h>
#define TElemType int
#define MAXSIZE 9999
typedef struct BiNode
{
TElemType data;
struct BiNode* lchild, * rchild;
}BiTNode,*BiTree;
BiNode* CreatBiT()
{
TElemType ch;
BiTree T;
ch = getchar();
if (ch == '#')
{
return NULL;
}
if (!(T = (BiNode*)malloc(sizeof(BiNode))))return NULL;
T->data = ch;
T->lchild = CreatBiT();
T->rchild = CreatBiT();
return T;
}
void PreOrderBiT(BiNode* T)
{
if (!T)return;
printf("%c", T->data);
PreOrderBiT(T->lchild);
PreOrderBiT(T->rchild);
}
void InOrderBiT(BiNode* T)
{
if (!T)return;
InOrderBiT(T->lchild);
printf("%c", T->data);
InOrderBiT(T->rchild);
}
void PostOrderBiT(BiNode* T)
{
if (!T)return;
PostOrderBiT(T->lchild);
PostOrderBiT(T->rchild);
printf("%c", T->data);
}
typedef struct Queue
{
int front;
int rear;
BiNode* data[MAXSIZE];
}SqQueue;
void LeverBiTree(BiNode* T)
{
BiNode* q=NULL;
Queue* Q;
if (!(Q = (Queue*)malloc(sizeof(Queue))))return;
Q->front = Q->rear = -1;
if (T == NULL)return;
Q->data[++Q->rear] = T;
while (Q->front != Q->rear)
{
q = Q->data[++Q->front];
printf("%c", q->data);
if (q->lchild != NULL)Q->data[++Q->rear] = q->lchild;
if (q->rchild != NULL)Q->data[++Q->rear] = q->rchild;
}
}
int main()
{
BiNode* T;
T=CreatBiT();
PreOrderBiT(T);
printf("\n");
InOrderBiT(T);
printf("\n");
PostOrderBiT(T);
printf("\n");
LeverBiTree(T);
printf("\n");
return 0;
}
遍历二叉树——前序 中序 后序 层序
最新推荐文章于 2024-10-01 20:11:33 发布