二叉树层次遍历 c++

#include<iostream>usingnamespacestd;structTnode{intdata;Tnode*lchild;Tnode*rchild;int... #include<iostream>
using namespace std;

struct Tnode
{
int data;
Tnode *lchild;
Tnode *rchild;
int a;
}T;

void creat(Tnode *&p)
{
int m,n;
p=new Tnode;
cout<<"请输入一个结点"<<endl;
cin>>p->data;
p->lchild=NULL;
p->rchild=NULL;
cout<<"是否输入左子树 1是 0否";
cin>>m;
if(m==1)
creat(p->lchild);
cout<<"是否输入右子树 1是 0否";
cin>>n;
if(n==1)
creat(p->rchild);
}

void preorder(Tnode *&p) //先序遍历
{
if(p)
{
cout<<p->data<<" ";
preorder(p->lchild);
preorder(p->rchild);
}
}

void inorder(Tnode *&p) //中序遍历
{
if(p)
{
inorder(p->lchild);
cout<<p->data<<" ";
inorder(p->rchild);
}
}

void postorder(Tnode *&p) //后序遍历
{
if(p)
{
postorder(p->lchild);
postorder(p->rchild);
cout<<p->data<<" ";
}
}

int b=0;
void leaf(Tnode *&p)
{

if(p)
{
leaf(p->lchild);
if(p->lchild==NULL&&p->rchild==NULL)
b++;
leaf(p->rchild);
}
}

int Depth (Tnode *&p )
{
int depthval,depthLeft,depthRight;

if ( p==NULL ) depthval = 0;
else
{
depthLeft = Depth( p->lchild );
depthRight= Depth( p->rchild );
depthval = 1+(depthLeft > depthRight ? depthLeft : depthRight);
}
return depthval;
}

void main()
{
Tnode *a;
creat(a);
preorder(a);
cout<<endl;
inorder(a);
cout<<endl;
postorder(a);
cout<<endl;
leaf(a);
cout<<"叶子个数为:"<<b<<endl;
Depth(a);
int depth=Depth(a);
cout<<"二叉树的深度为:"<<depth;
cout<<endl;
}
这是我二叉树的基本操作,现在想加入层次遍历的函数,
需要用队列,可以顺序队列,也可以链式队列,
小女子拜托各位高手帮我完成这段代码~~
谢谢啦~~
展开
 我来答
liujq007
2009-08-23 · TA获得超过942个赞
知道大有可为答主
回答量:1035
采纳率:0%
帮助的人:1094万
展开全部
没给例子,不知道对不对

#include<list>

void levelorder(Tnode *&p)
{
list<Tnode *>q;
if(p)q.push_back(p);
while(!q.empty())
{
p=q.front();
q.pop_front();
cout<<p->data<<" ";
if(p->lchild)
q.push_back(p->lchild);
if(p->rchild)
q.push_back(p->rchild);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JohnnyKwok0205
2009-08-23 · TA获得超过409个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:288万
展开全部
回学校看看书再来解决吧..不过那时候肯定被解决了,唉..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式