实验四

#include<iostream>
using namespace std;
const int MaxSize=10;
class BiTree
{
public:
BiTree(char[],int n);
int GetLength();
void PrintAll();
void PrintPC();
void PrintL();
private:
char point[MaxSize];
int length;
};
BiTree::BiTree(char a[],int n)
{
if(n>MaxSize||n<0)throw"错误";
for(int i=0;i<n;i++)
{
point[i]=a[i];
}
length=n;
}
int BiTree::GetLength()
{
return length;
}
void BiTree::PrintAll()
{
for(int i=1;i<MaxSize;i++)
cout<<point[i]<<" ";
}
void BiTree::PrintPC()
{
int lc,rc,parent;    
    for(int i=1;i<=length;i++)    
    {    
        lc=2*i;   
        rc=2*i+1;    
        parent=i/2;    
        if(point[i-1]!='#') 
        {    
            if(parent>=1)
                cout<<"结点"<<point[i-1]<<" 双亲为:"<<point[parent-1]<<"   ";    
            else    
                cout<<"结点"<<point[i-1]<<" 无双亲"<<"   ";    
            if(point[lc-1]!='#'&&lc<=length)  
                cout<<"\t左孩子为:"<<point[lc-1]<<"   ";    
            else    
                cout<<" 无左孩子"<<"   ";    
            if(point[rc-1]!='#'&&lc<=length)    
                cout<<" 右孩子为:"<<point[rc-1]<<"   ";
else    
                cout<<"\t无右孩子";    
            cout<<endl;    
        }    
    }    
}
void BiTree::PrintL()
{
int lc,rc;
cout<<"叶子结点为:"<<endl;
    for(int i=1;i<length;i++)
{
if(point[i+1]!='#')
{
lc=2*i;
rc=2*i+1;
if(point[lc+1]=='#'&&point[rc]=='#')
cout<<point[i+1];
}
}
}
int main()
{
char a[MaxSize]={'A','B','C','#','D','#','#','#','#'};
BiTree bt(a,9);
cout<<"该树层序输出:"<<endl;
bt.PrintAll();
cout<<endl;
cout<<"结点的的双亲和孩子:"<<endl;
bt.PrintPC();
cout<<endl;
bt.PrintL();
cout<<endl;
return 0;
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值