广度优先周游二叉树
来源:互联网 发布:linux cst破解 编辑:程序博客网 时间:2024/06/15 09:18
主要思想:
从根结点开始逐层逐个地访问各个结点。在周游开始的时候,首先把根结点放入队列;
然后每次从队列中取出队头元素进行处理,没处理一个结点是,按从左到右的顺序把它的所有子结点放入对列。
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 20#define OK 1#define ERROR 0typedef int Status;typedef char TElemType;//二叉树的链式储存结构typedef struct BiTNode{ TElemType data; struct BiTNode * lchild; struct BiTNode * rchild;}BiTNode,*BiTree;typedef BiTree QElemtype;//循环队列的储存结构typedef struct{ QElemtype data[MAXSIZE]; int front; int rear;}sqQueue;//队列的初始化Status InitQueue(sqQueue * Q){ Q->front=0; Q->rear=0; return OK;}//队列长度Status QueueLength(sqQueue Q){ return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;}//入队操作Status EnQueue(sqQueue * Q, QElemtype e){ if((Q->rear+1)%MAXSIZE==Q->front) { return ERROR; } Q->data[Q->rear]=e; Q->rear=(Q->rear+1)%MAXSIZE; return OK;}//出队操作Status DeQueue(sqQueue * Q,QElemtype * e){ if(Q->front==Q->rear) { return ERROR; } *e=Q->data[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return OK;}//二叉树的建立void CreateBiTree(BiTree * T){ TElemType ch; scanf("%c",&ch); if(ch=='#') { *T=NULL; } else { *T=(BiTree)malloc(sizeof(BiTNode)); } if(!*T) { return ; } else { (*T)->data=ch; CreateBiTree(&(*T)->lchild); //构造左子树 CreateBiTree(&(*T)->rchild); //构造右子树 }}//广度优先周游二叉树(层次遍历)void LevelOrder(BiTree * T,sqQueue * Q){ if(*T) { EnQueue(Q,(*T)); } while(QueueLength((*Q))!=0) { DeQueue(Q,&(*T)); printf("%c ",(*T)->data); //访问当前结点 if((*T)->lchild!=NULL) { EnQueue(Q,(*T)->lchild); } if((*T)->rchild!=NULL) { EnQueue(Q,(*T)->rchild); } } printf("\n");}int main(){ sqQueue Q; BiTree root; InitQueue(&Q); printf("please enter the data:\n"); CreateBiTree(&root); printf("LevelOrdertraversal the data:\n"); LevelOrder(&root,&Q); return 0;}
0 0
- 广度优先周游二叉树
- 广度优先遍历二叉树
- 二叉树广度优先遍历
- 广度优先遍历二叉树
- 广度优先遍历二叉树
- 广度优先搜索二叉树
- 广度优先遍历二叉树
- 二叉树广度优先遍历
- 二叉树 广度优先遍历
- 二叉树广度优先遍历+二叉树深度优先遍历
- 二叉树的广度优先遍历
- 广度优先遍历二叉树实现
- Java 二叉树广度优先遍历
- 二叉树的广度优先遍历
- 二叉树的广度优先搜索
- 二叉搜索树的广度优先遍历
- 二叉树的周游
- 图及其算法复习(Java实现) 一:存储结构,深度优先周游,广度优先周游
- Python快速教程
- POJ 1287 Networking
- PhotoGram 程序开发网络帮助文件 版本2.0
- 高仿QQ源码下载 (android前端+JAVA后台+spark<windows版聊天>)方便集成到自己系统
- android Toast大全(五种情形)建立属于你自己的Toast
- 广度优先周游二叉树
- github教程
- mysql 中存储过程
- 菜单截图那些事儿
- smarty实例教程
- HttpClient学习整理
- JavaOO综合练习题目 -- 宠物管理系统
- mysql查询之表名大小写
- Linux驱动加载总结