二叉树-层序遍历
来源:互联网 发布:手机健康体检软件 编辑:程序博客网 时间:2024/05/22 17:32
#include<iostream>#include<malloc.h>#include<stdio.h>#define MAXSIZE 20 //最多结点个数using namespace std;/*二叉链表*/typedef struct bnode{char data;struct bnode *lchild,*rchild;}Bnode,* BTree;/*循环队列*/typedef BTree DataType;typedef struct{DataType data[MAXSIZE];int front,rear; }SeqQueue,* PSeqQueue;PSeqQueue Init_SeqQueue(void);//循环队列初始化int Empty_SeqQueue(PSeqQueue Q);//判断队空void In_SeqQueue(PSeqQueue Q,DataType x);//入队void Out_SeqQueue(PSeqQueue Q,DataType * y);//出队void Destory_SeqQueue(PSeqQueue * Q);//销毁队列BTree CreateBinTree(void);//先序创建二叉树void LevelOrder(BTree t);//层序遍历/*主函数*/int main(){cout<<"\n请按先序次序输入各结点的值,以#表示空树(输入时可连续输入):\n";BTree T=CreateBinTree();if(!T){cout<<"\n未建立树,请先建树!";return 0;}cout<<"\n\n层序遍历:";LevelOrder(T);return 1;}/*循环队列初始化*/PSeqQueue Init_SeqQueue(void){PSeqQueue Q;Q=(PSeqQueue)malloc(sizeof(SeqQueue));if(Q){Q->front=0;Q->rear=0;}return Q;}/*判断队空*/int Empty_SeqQueue(PSeqQueue Q){if(Q && Q->front==Q->rear)return 1;else return 0;}/*入队*/void In_SeqQueue(PSeqQueue Q,DataType x){if(Q->front == (Q->rear+1)%MAXSIZE){cout<<"队满不能入队!";return;}else{Q->rear=(Q->rear+1)%MAXSIZE;Q->data[Q->rear]=x;}}/*出队*/void Out_SeqQueue(PSeqQueue Q,DataType * y){if(Empty_SeqQueue(Q)){cout<<"队空不能出队!";return;}else{Q->front=(Q->front+1)%MAXSIZE;* y=Q->data[Q->front];}}/*销毁队列*/void Destory_SeqQueue(PSeqQueue * Q){if(* Q)free(* Q);* Q=NULL;}/*先序创建二叉树*/BTree CreateBinTree(void){BTree t;char ch=getchar();if(ch=='#')t=NULL;//读入#时,将相应节点指针置空else{t=(Bnode *)malloc(sizeof(Bnode));t->data=ch;t->lchild=CreateBinTree();//构造二叉树的左子树t->rchild=CreateBinTree();//构造二叉树的右子树}return t;}/******************************层序遍历******************************/void LevelOrder(BTree t){BTree p;PSeqQueue Q=Init_SeqQueue();if(t)In_SeqQueue(Q,t);while(!Empty_SeqQueue(Q)){Out_SeqQueue(Q,&p);cout<<p->data<<" ";if(p->lchild)In_SeqQueue(Q,p->lchild);if(p->rchild)In_SeqQueue(Q,p->rchild);}Destory_SeqQueue(&Q);}
0 0
- 层序遍历二叉树
- 层序遍历二叉树
- 层序遍历二叉树
- 层序遍历二叉树
- 二叉树-层序遍历
- 二叉树------层序遍历
- 层序遍历二叉树
- 层序遍历二叉树
- 层序遍历二叉树
- 层序遍历二叉树
- 二叉树遍历 层序遍历
- 二叉树层遍历
- 层遍历二叉树
- 层序遍历二叉树VS之字形遍历二叉树
- 二叉树的层序遍历
- 【算法】二叉树遍历(层序)
- 二叉树的层序遍历
- 二叉树的层序遍历
- 操作字节数组
- 关于youku嵌入式播放器浏览器白色边框的问题
- 软件测试的风险主要体现在哪里?
- 如何用Python实现任一个英文的纯文本文件,统计其中的单词出现的个数?
- ORACLE命名规范
- 二叉树-层序遍历
- 关于BIOS的入口地址0xFFFF0
- JAVA设计模式之单例模式
- Java并发编程实践--内部锁可重进入
- 二叉树-遍历
- 利用模拟退火算法求解TSP问题(C++实现)
- samba config
- 软件测试人员与QA的区别
- 哈夫曼树——C++实现