#include<iostream>
using namespace std;
const int MaxSize=100;
class BiTree
{
private:
char data[MaxSize];
int length;
public:
BiTree(char a[],int n);
~BiTree(){}
void Leveroder();
void Parch();
void Leaf();
};
BiTree::BiTree(char a[],int n)
{
if(n>MaxSize||n<1) throw"位置";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
void BiTree::Leveroder()
{
for(int i=0;i<length;i++)
{
if(data[i]!='#')
cout<<data[i];
}
}
void BiTree::Parch()
{
int c1,c2,b;
for(int i=1;i<=length;i++)
{
c1=2*i;
c2=2*i+1;
b=i/2;
if(data[i-1]!='#')
{
if(b>=1)
cout<<"结点"<<i<<"\t双亲为:"<<data[b-1]<<" ";
else
cout<<"结点"<<i<<"\t无双亲"<<" ";
if(data[c1-1]!='#'&&c1<=length)
cout<<"\t左孩子为:"<<data[c1-1]<<" ";
else
cout<<"\t无左孩子"<<" ";
if(data[c2-1]!='#'&&c2<=length)
cout<<"\t右孩子为:"<<data[c2-1]<<" ";
else
cout<<"\t无右孩子";
cout<<endl;
}
}
}
void BiTree::Leaf()
{
int c1,c2;
for(int i=1;i<=length;i++)
{
c1=2*i;
c2=2*i+1;
if(data[c1-1]=='#'&&data[c2-1]=='#'&&data[i-1]!='#')
cout<<data[i-1];
if(c1>length&&data[i-1]!='#')
cout<<data[i-1];
}
}
int main()
{
char b[9]={'A','B','C','D','#','E','F','#','G'};
BiTree c(b,9);
cout<<"该二叉树的层序输出为:";
c.Leveroder();
cout<<endl;
c.Parch();
cout<<endl;
cout<<"叶子结点信息为:";
c.Leaf();
cout<<endl;
return 0;
}
using namespace std;
const int MaxSize=100;
class BiTree
{
private:
char data[MaxSize];
int length;
public:
BiTree(char a[],int n);
~BiTree(){}
void Leveroder();
void Parch();
void Leaf();
};
BiTree::BiTree(char a[],int n)
{
if(n>MaxSize||n<1) throw"位置";
for(int i=0;i<n;i++)
data[i]=a[i];
length=n;
}
void BiTree::Leveroder()
{
for(int i=0;i<length;i++)
{
if(data[i]!='#')
cout<<data[i];
}
}
void BiTree::Parch()
{
int c1,c2,b;
for(int i=1;i<=length;i++)
{
c1=2*i;
c2=2*i+1;
b=i/2;
if(data[i-1]!='#')
{
if(b>=1)
cout<<"结点"<<i<<"\t双亲为:"<<data[b-1]<<" ";
else
cout<<"结点"<<i<<"\t无双亲"<<" ";
if(data[c1-1]!='#'&&c1<=length)
cout<<"\t左孩子为:"<<data[c1-1]<<" ";
else
cout<<"\t无左孩子"<<" ";
if(data[c2-1]!='#'&&c2<=length)
cout<<"\t右孩子为:"<<data[c2-1]<<" ";
else
cout<<"\t无右孩子";
cout<<endl;
}
}
}
void BiTree::Leaf()
{
int c1,c2;
for(int i=1;i<=length;i++)
{
c1=2*i;
c2=2*i+1;
if(data[c1-1]=='#'&&data[c2-1]=='#'&&data[i-1]!='#')
cout<<data[i-1];
if(c1>length&&data[i-1]!='#')
cout<<data[i-1];
}
}
int main()
{
char b[9]={'A','B','C','D','#','E','F','#','G'};
BiTree c(b,9);
cout<<"该二叉树的层序输出为:";
c.Leveroder();
cout<<endl;
c.Parch();
cout<<endl;
cout<<"叶子结点信息为:";
c.Leaf();
cout<<endl;
return 0;
}