您的位置:首页 > 其它

二叉树的遍历

2013-04-12 09:14 127 查看
# include<iostream>
using namespace std;
struct Tree
{
char chr;
Tree *l,*r;
};
Tree *root;
int sign,Count;
void Init(struct Tree *&t)//
{
char a;
if(t==NULL)
{
t=new Tree;
cin>>a;
t->chr=a;
t->l=NULL;
t->r=NULL;
if(a=='0')
{
sign++;
return;
}
else
{
if(sign>=2)Count++;//后面有两个0的节点,一定就是叶子
sign=0;
}
}
Init(t->l);//初始化左子树
Init(t->r);//初始化右子树
}
void FirstSequence(struct Tree *t)//先序
{
if(t->chr=='0')return;
cout<<t->chr<<" ";
FirstSequence(t->l);
FirstSequence(t->r);

}
void InSequence(struct Tree *t)//中序
{
if(t->chr=='0')return;
InSequence(t->l);
cout<<t->chr<<" ";
InSequence(t->r);
}
void AfterSequence(struct Tree *t)//后序
{
if(t->chr=='0')return;
AfterSequence(t->l);
AfterSequence(t->r);
cout<<t->chr<<" ";
}
int main()
{
Count=0;
sign=0;
Init(root);
FirstSequence(root);
cout<<endl;
InSequence(root);
cout<<endl;
AfterSequence(root);
cout<<endl;
if(sign>=2)Count++;//如果最后输入两个0,不会被判断,在此完善
cout<<Count<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: