二叉树实验

这篇博客介绍了一个二叉树的实现,通过顺序结构存储,包括构造二叉树、层序输出节点数据、输出节点的双亲和孩子信息以及所有叶子节点。文章提供了一段C++代码,用于实现这些功能。
摘要由CSDN通过智能技术生成

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

#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;}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值