注意的地方
1 结构体数组
2 floor函数 向下取整--------ceil函数 向上取整---------round函数 四舍五入取整当然要头文件#include<math.h>
3 函数中把要改变的结果引用传过去,,,
#include<bits/stdc++.h>
using namespace std;
int n;
int flag=0;
typedef struct Tree{
int data;
bool isEmpty;
}Tree;
void InitT(Tree T[]){
for(int i=1;i<n;i++){
T[i].isEmpty=true;
}
}
void InputT(Tree T[]){
int x;
while(cin>>x&&x>0&&x<n){
cin>>T[x].data;
T[x].isEmpty=false;
}
return;
}
//*T或者是T[]都可以
void TraverseT(Tree *T){
for(int i=1;i<n;i++){
if(!T[i].isEmpty ){
if(flag) cout<<" ";
cout<<T[i].data ;
flag=1;
}
}
}
bool Lchild(Tree *T,int i,int &e){
if(i>=n) return false;
else if(2*i>=n||T[2*i].isEmpty==true) return false;
else e=T[2*i].data;
return true;
}
bool Rchild(Tree *T,int i,int &e){
if(i>=n) return false;
else if(2*i+1>=n||T[2*i+1].isEmpty==true) return false;
else e=T[2*i+1].data;
return true;
}
bool F(Tree *T,int i,int &e){
if(i>=n) return false;
else if(T[i/2].isEmpty==true) return false;
else e=T[i/2].data;
return true;
}
int FloorT(Tree *T,int i){
return floor(log(i)/log(2))+1;
}
bool isLeaf(Tree *T,int i){
return (i>(n-1)/2);
}
int main(){
cin>>n;
Tree T[n];
InitT(T);
InputT(T);
TraverseT(T);
int i;cin>>i;
int e;
if(Lchild(T,i,e)) cout<<e<<endl;
if(Rchild(T,i,e)) cout<<e<<endl;
if(F(T,i,e)) cout<<e<<endl;
cout<<FloorT(T,i)<<endl;
if(isLeaf(T,i)) cout<<"是叶子节点"<<endl;
else cout<<"不是叶子节点"<<endl;
return 0;
}