实验四 树和 二叉树

#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;
}    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值