首页 > 编程知识 正文

非递归遍历二叉树结果都一样吗,层序遍历英文

时间:2023-05-04 15:07:20 阅读:15169 作者:4076

首先,让我们了解什么是层序遍历。

层序遍历:进行层序遍历时,访问某一层节点后,按照他们的访问顺序依次访问各节点的左儿女和右儿女。 这样重叠后,先访问的节点的左右孩子也先访问,非常适合队列的操作特性。

二叉树层序遍历算法:

#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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。