#include <stdio.h>
#include <stdlib.h>
#define MaxLength 100
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*Node;
Node Creat()//前序遍历输入
{
char x;
Node p;
scanf("%c",&x);
if (x != ' ')
{
p = (Node)malloc(sizeof(BiTNode));
p->data = x;
p->lchild = Creat();
p->rchild = Creat();
}
else
p = NULL;
return p;
}
//void LevelOrderTraverse(Node T)
//{
// if (!T)
// {
// return;
// }
// else
// {
// printf("%c ",T->data);
// LevelOrderTraverse(T->lchild);
// LevelOrderTraverse(T->rchild);
// }
//}
void LevelOrderTraverse(Node T)//使用队列
{
Node Q[MaxLength];
Node P;
int front = 0,rear = 0;
if(T)//头结点进队列
{
Q[rear] = T;
rear = (rear + 1) % MaxLength;
}
while(front != rear)
{
/*P = (Node)malloc(sizeof(BiTNode));*/
P = Q[front];
front = (front + 1) % MaxLength;
printf("%c ",P->data);//接着队头结点出队列
if (P->lchild) //如果队头结点左右孩子不为空,则进队列
{
Q[rear] = P->lchild;
rear = (rear + 1) % MaxLength;
}
if (P->rchild)
{
Q[rear] = P->rchild;
rear = (rear + 1) % MaxLength;
}
}
}
int main()
{
Node T = Creat();
LevelOrderTraverse(T);
return 0;
}
C语言二叉树的层序遍历
最新推荐文章于 2025-11-08 13:02:27 发布
本文介绍了一段使用C语言实现的二叉树前序遍历的代码,包括创建节点、前序遍历算法及使用队列进行层次遍历的方法。
8070

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



