首先,让我们了解什么是层序遍历。
层序遍历:进行层序遍历时,访问某一层节点后,按照他们的访问顺序依次访问各节点的左儿女和右儿女。 这样重叠后,先访问的节点的左右孩子也先访问,非常适合队列的操作特性。
二叉树层序遍历算法:
#include iostream
#include stdlib.h
用户命名空间STD;
/*树的节点*
结构节点
{
节点*液晶屏,*液晶屏; //左右孩子的指针
int value; //树节点数据
(;
/*链团队节点*
结构节点
{
节点*下一步;
节点*值; //树的节点地址
(;
/*连锁团队的班级/
类队列
{
公共:
队列(;
语音队列(节点* t ); //入队
Void显示(; //打印
节点* front (; //返回上一个元素
bool Empty (;
隐私:
节点*头; //团队领导指针
节点*读取; //末尾指针
(;
/*判断连锁团队是否已满*
bool Queue:Empty () ) ) )。
{
if (头==空) )。
返回假;
else
返回真;
}
/*向后移动出队函数:标头指针并返回到上一个标头指针*
node *Queue:Front (
{
节点* temp=head-value;
head=head-next;
返回时间;
}
/*打印函数*
void queue :3360显示(
{
if (头==空) )。
返回;
节点* p=head;
是while(p )
{
cout p-value ';
p=p-next;
}
}
//队列初始化/
Queue:Queue () )
{
head=rear=NULL;
}
/*入队函数*
语音队列:3360 enqueue (节点* t ) )。
{
if (头==空) )。
{
head=new Node;
头值=t;
头下一个=空;
rear=head;
}
else
{
节点* p=新节点;
p-next=空值;
p-value=T;
rear-next=p;
rear=p;
}
}
/*二叉树之类/
类bi树
{
公共:
节点*创建树(节点* t );
语音识别器(节点* t );
隐私:
队列q;
(;
/*层序遍历*
voidbitree :3360 lever order (节点* t ) )。
{
节点* p=t;
q.enqueue(p :
while(q.empty ) )
{
p=Q.Front (;
cout p-value ';
if(p-lchild ) )。
q.enqueue(p-lchild );
if(p-rchild ) )。
q.enqueue(p-rchild );
}
}
/*制作二叉树*
节点* bi树:3360创建树(节点* t ) )。
{
int i;
cin i;
if(I==0) ) ) )。
T=NULL;
else
{
T=new node;
叔值=I;
t-lchild=创建树(t-lchild ); //递归构造左边的子树
t-rchild=createtree(t-rchild ); //递归构造右边的子树
}
返回t; //返回根指针
}
int main () )
{
cout '请输入要输入的字符,然后按0退出:' endl;
节点* t=null;
Bi树文本; //定义二叉树
t=text.createtree(t; //做二叉树
text.leverorder(t; //层序遍历
getchar (;
getchar (;
返回0;
}
/12340050006708000
转载于3:https://my.oschina.net/forever winer/blog/768270