PAT 64.Complete Binary Search Tree

题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1064

思路分析:

 1)先对数组排好序。

 2)采用中序遍历的方式,将排好序的元素逐个插入在完全二叉树中。

 3)利用完全二叉树采用数组存储的方式,对于结点序号为index的结点,其左孩子结点2*i,右孩子结点为2*i+1,(结点编号从1开始)遍历。

 

 1 #include <stdio.h>

 2 #include <stdlib.h>

 3 #include <algorithm>

 4 using namespace std;

 5 

 6 

 7 int t[1001],a[1001];

 8 int m=1;

 9 

10 void inOrder(int index){

11     if((index*2)<=n) inOrder(2*index);

12     t[index]=a[m++];

13     if((index*2+1)<=n) inOrder(2*index+1);

14 }

15 

16 int main(){

17         int n;

18     scanf("%d",&n);

19 

20     for(int i=1;i<=n;i++){

21         scanf("%d",&a[i]);

22     }

23 

24     sort(a+1,a+n+1);

25     inOrder(1);

26 

27     for(int i=1;i<=n;i++){

28         printf("%d",t[i]);

29         if(i!=n) printf(" ");

30     }

31 

32     system("pause");

33     return 0;

34 }

 

你可能感兴趣的:(Binary search)