二叉树实验

确定一个二叉树,利用顺序结构存储,实现树的构造;并层序输出点数据;输出各个结点双亲和孩子信息;输出所有叶子信息。

#include<iostream>
using namespace std;
#include<string.h>
const int M=100;
class tree
{public:
tree(){length=0;}  
void create(); //建立二叉树
void print(); //输出结点信息
void leave();//输出叶子结点
void all();//层序输出结点
 private:  
        char a[M];  
        int length;  
};  
void  tree::create()
{
char n;
int i=1;   
cout<<"请输入二叉树结点,‘#’为空结点,'0'代表结束!"<<endl; 
cout<<"输入数据:";     
   while(1)  
    {      
        cin>>n;  
        if(n=='0') { break;}  
        else  a[i++]=n;length++;     
}  }   
  void tree::all()


{         
       if(a[1]!='0')  
      {  cout<<"层序输出为:";
         for(int i=1;i<=length;i++)  
{cout<<"  "<<a[i];  }
      cout<<endl;
  }  
    else cout<<"该树为空!";       
}  


void tree::print()
{ int i;
cout<<"各结点信息:"<<endl;
for(i=1;i<=length;i++)
{
cout<<"第 "<<i<<"个结点信息:"<<a[i]<<endl;  
        cout<<"该结点的双亲结点信息:"<<a[i/2]<<endl;  
        if(a[2*i]=='#'||(2*i)>length)  
{cout<<"该结点无左孩子!"<<endl;}   
            else  cout<<"该结点的左孩子结点信息:"<<a[2*i]<<endl;     
        if(a[2*i+1]=='#'||(2*i+1)>length)  
            cout<<"该结点无右孩子!"<<endl;  
            else  cout<<"该结点的右孩子结点信息:"<<a[2*i+1]<<endl;   
            }  
}
void tree::leave()
{if(a[1]!='0')  
    {  
        cout<<"叶子结点为:";  
        for(int i=1;i<=length;i++)  
        {  
        if((a[2*i]=='#'&&a[2*i+1]=='#')||((2*i+1)>length&&(2*i)>length)&&a[i]!='#')  
        cout<<a[i]<<" ";  
        }  
        cout<<endl;   
    }  
    else cout<<"该树为空!";  
}  
int main()
{tree obj;
obj.create();
obj.print();
obj.leave();
obj.all();

return 0;}



猜你喜欢

转载自blog.csdn.net/CHENCHWT/article/details/80260596
今日推荐