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 }

 

posted @ 2020-12-06 20:33  BlackSnow  阅读(87)  评论(0)    收藏  举报