#include <iostream>
#include <string>
using namespace std;
// 二叉树
typedef struct BiTNode
{
string data;
BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
// 初始化二叉树
BiTree tree;
tree = new BiTNode;
tree->data = "A";
BiTNode *p;
p = new BiTNode;
p->data="B";
p->lchild=NULL;
p->rchild=NULL;
tree->lchild=p;
p = new BiTNode;
p->data="C";
p->lchild=NULL;
p->rchild=NULL;
tree->rchild=p;
p = new BiTNode;
p->data="D";
p->lchild=NULL;
p->rchild=NULL;
tree->lchild->lchild=p;
p = new BiTNode;
p->data="E";
p->lchild=NULL;
p->rchild=NULL;
tree->lchild->rchild=p;
p = new BiTNode;
p->data="F";
p->lchild=NULL;
p->rchild=NULL;
tree->rchild->lchild=p;
p = new BiTNode;
p->data="G";
p->lchild=NULL;
p->rchild=NULL;
tree->rchild->rchild=p;
p = new BiTNode;
p->data="H";
p->lchild=NULL;
p->rchild=NULL;
tree->rchild->lchild->lchild=p;
p = new BiTNode;
p->data="I";
p->lchild=NULL;
p->rchild=NULL;
tree->rchild->lchild->rchild=p;
typedef struct LinkNode{
BiTree data;
LinkNode *next;
}LinkNode;
typedef struct
{
LinkNode *front, *rear;
}LinkQueue;
void InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=new LinkNode;
Q.front->next=NULL;
}
//从队尾插入
void EnQueue(LinkQueue &Q, BiTree x)
{
LinkNode *s;
// s =(LinkNode*)malloc(sizeof(LinkNode));
s = new LinkNode;
s->data=x;
s->next=NULL;
Q.rear->next=s;
Q.rear=s;
}
void DeQueue(LinkQueue &Q, BiTree &x)
{
LinkNode *p=Q.front->next;
x = p->data;
Q.front->next=p->next;
if(Q.front->next==NULL)
Q.rear=Q.front;//注意不能写成Q.front=Q.rear;
free(p);
}
bool QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return true;
else
return false;
}
void LevelOrder(BiTree T)
{
LinkQueue q;
BiTree t;
InitQueue(q);
EnQueue(q, T);
while(!QueueEmpty(q))
{
DeQueue(q, t);
cout<<t->data;
if(t->lchild)
EnQueue(q,t->lchild);
if(t->rchild)
EnQueue(q, t->rchild);
}
}
LevelOrder(tree)
/*
输出:
ABCDEFGHI
*/
二叉树层次遍历(利用队列)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 二叉树层次遍历 按照二叉树中的层次从左到右依次遍历每层中的结点。具体的实现思路是:通过使用队列的数据结构,从树的根...
- 题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)...
- 我是为了练习方便,先在纸上花了一个二叉搜索树(满的二叉树)。 反转二叉树效果如下: dfs,讲真看过《大话数据结构...