Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

二叉树的层次遍历(c++)

层次遍历 :对于一颗二叉树,从根结点开始,按从上到下,从左到右的顺序访问每一个结点

思路

使用队列
1,将根结点入队
2,队不为空时循环:出列一个结点,打印它
①有左孩子,将左孩子入队
②有右孩子,将右孩子入队

#include<iostream>
#include<queue>
using namespace std;
typedef struct TriTNode{
	struct TriTNode *lchild;
	struct TriTNode *rchild;
	char Node;
}BiTNode,*BiTree; 
void levelOrder(BiTNode *root)
{
	BiTNode *p=root;
	queue<BiTNode*> qu;//初始化队列 
	qu.push(p);//根结点入队
	while(!qu.empty())//队非空循环 
	{
		p=qu.front();//出队,队内第一个元素
		qu.pop();//首元素出队 
		cout<<p->Node;//打印
		if(p->lchild!=NULL) qu.push(p->lchild);//左孩子入队
		if(p->rchild!=NULL) qu.push(p->rchild);//右孩子入队
	 } 
 }
void CreateBiTree(BiTree &T)
{
	char ch;
	cin>>ch;
	if(ch=='#') T=NULL;
	else{
		T=new BiTNode;
		T->Node=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}	
 } 
int main()
{
	BiTree T;
	cout<<"请输入"<< endl; 
 	CreateBiTree(T);
 	cout << "二叉树创建完成!"<<endl;
 	cout<<"二叉树层次遍历为"<<endl;
 	levelOrder(T); 
	return 0;
} 
//例:abc##de###fg#h### ->abfcdgeh

在这里插入图片描述

在这里插入图片描述

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: ES6新特性实现面向对象编程,上万字详解用class语法定义类

下一篇: IntelliJ IDEA(2020.2)的下载、安装步骤(详细讲解)

精华推荐