#include<iostream>
using namespace std;
int a[20],b[20];
int main(){
int i,n,nu;
cout<<"您要输入几个空结点:"<<endl; cin>>n;
cout<<"分别为那几号:"<<endl;
for(i=1;i<=n;i++)
{cin>>nu;
a[nu]=NULL;
b[i]=nu;
}
cout<<"请输入各结点的信息"<<endl;
for(i=1;i<=7;i++)
{
bool flag = false;
for(int j = 0;j < 7;j++){
if(i == b[j]){
flag = true;
}
}
if(flag){}
else{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
}
cout<<"层序输出节点数据如下:"<<endl;
for(i=1;i<=7;i++)//层序输出
{
if(a[i]==NULL){}
else{
cout<<"a["<<i<<"]="<<a[i]<<" "<<endl;
}
}
cout<<""<<endl;
for(i=1;i<=7;i++)//找孩子和双亲结点
{
if(a[i]==NULL){}
else{
cout<<"a["<<i<<"]="<<a[i]<<" "<<endl;
if(a[2*i]==NULL) cout<<"左孩子结点为空"<<endl;
else cout<<"左孩子结点为:"<<a[2*i]<<endl;
if(a[2*i+1]==NULL) cout<<"右孩子结点为空"<<endl;
else cout<<"右孩子结点为:"<<a[2*i+1]<<endl;
if(a[int (i/2)]==NULL) cout<<"双亲结点为空"<<endl;
else cout<<"双亲结点是为:"<<a[int (i/2)]<<endl;
if(a[2*i]==NULL&&a[2*i+1]==NULL)
cout<<"该结点是叶子结点"<<endl;
}
}
return 0;
}
实验结果如图