Complete Binary Tree Aizu - ALDS1_9_A
https://vjudge.net/problem/Aizu-ALDS1_9_A
二叉堆由完全二叉树实现,用起点为1 的一维数组输入键值序列
分别求出i/2,2i,2i+1
1 #include<iostream> 2 const int MAX=100000; 3 using namespace std; 4 int parent (int i){return i/2;} 5 int left(int i){return 2*i;} 6 int right(int i){ return 2*i+1;} 7 int main() 8 { 9 int H,i,A[MAX+1]; 10 cin>>H; 11 for(int i=1;i<=H;i++) 12 cin>>A[i]; 13 for(int i=1;i<=H;i++)//1层数开始 14 { 15 cout<<"node "<<i<<": key = "<<A[i]<<", "; 16 if(parent(i)>=1) 17 cout<<"parent key = "<<A[parent(i)]<<", "; 18 if(left(i)<=H) 19 cout<<"left key = "<<A[left(i)]<<", "; 20 if(right(i)<=H) 21 cout<<"right key = "<<A[right(i)]<<", "; 22 cout<<endl; 23 } 24 return 0; 25 }

浙公网安备 33010602011771号