二叉树的层次遍历
2016-09-17 17:23
169 查看
层次遍历二叉树,关键要用到队列,父结点一出,就要判断子结点是否为空,非空则马上进入队列
#include <iostream>
#include <queue>
using namespace std;
typedef struct bitnode
{
char data;
struct bitnode *lchild;
struct bitnode *rchild;
}bitnode,*bitree;
void create(bitree &bt)
{
char data;
cin>>data;
if(data=='#')
bt=NULL;
else
{
bt=(bitree)malloc(sizeof(bitnode));
bt->data=data;
create(bt->lchild);
create(bt->rchild);
}
}
int deep(bitree bt)
{
if(bt==NULL)
return 0;
else
{
int left=deep(bt->lchild);
int right=deep(bt->rchild);
if(left>=right)
return left+1;
else
return right+1;
}
}
void leveltraverse(bitree bt)
{
bitree b;
queue<bitree> q;
if(bt!=NULL)
q.push(bt);
while(!q.empty())
{
b=q.front();
cout<<b->data;
q.pop();
if(b->lchild!=NULL)
q.push(b->lchild);
if(b->rchild!=NULL)
q.push(b->rchild);
}
}
int main()
{
int level;
bitree bt;
create(bt);
level=deep(bt);
leveltraverse(bt);
}
#include <iostream>
#include <queue>
using namespace std;
typedef struct bitnode
{
char data;
struct bitnode *lchild;
struct bitnode *rchild;
}bitnode,*bitree;
void create(bitree &bt)
{
char data;
cin>>data;
if(data=='#')
bt=NULL;
else
{
bt=(bitree)malloc(sizeof(bitnode));
bt->data=data;
create(bt->lchild);
create(bt->rchild);
}
}
int deep(bitree bt)
{
if(bt==NULL)
return 0;
else
{
int left=deep(bt->lchild);
int right=deep(bt->rchild);
if(left>=right)
return left+1;
else
return right+1;
}
}
void leveltraverse(bitree bt)
{
bitree b;
queue<bitree> q;
if(bt!=NULL)
q.push(bt);
while(!q.empty())
{
b=q.front();
cout<<b->data;
q.pop();
if(b->lchild!=NULL)
q.push(b->lchild);
if(b->rchild!=NULL)
q.push(b->rchild);
}
}
int main()
{
int level;
bitree bt;
create(bt);
level=deep(bt);
leveltraverse(bt);
}
相关文章推荐
- 题目:二叉树的锯齿形层次遍历
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- 二叉树的锯齿形层次遍历,lintcode
- 第十周——项目一(1)—二叉树的层次遍历算法
- 数据结构 c语言实现 二叉树的层次遍历(linux下实现)
- 二叉树按层次遍历--队列实现
- lintcode-二叉树的层次遍历II-70
- 二叉树的简单操作(前中后序遍历,层次遍历,树高,叶子数,交换二叉树等)
- 数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 数据结构学习——二叉树的层次遍历:上下左右&下上右左
- UVa122 二叉树的层次遍历
- LintCode 71 二叉树的锯齿形层次遍历
- LeetCode - 107. 二叉树的层次遍历 II
- 二叉树的层次遍历
- 二叉树2:层次遍历方式及先序、中序、后序(递归与非递归)遍历方式
- 二叉树的层次,中序非递归遍历,以递归前序的方式构造二叉树,将二叉树中的e更新为d,输出从根结点出发 到指定结点,依次经过的祖先(即路径),由前序和中序还原二叉树
- Lintcode 二叉树的层次遍历
- 剑指offer之求二叉树的深度(非递归的层次遍历)Java实现
- 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次)