PAT 64.Complete Binary Search Tree

时间:2023-03-08 21:59:07

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

思路分析:

1)先对数组排好序。

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

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

 #include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std; int t[],a[];
int m=; void inOrder(int index){
if((index*)<=n) inOrder(*index);
t[index]=a[m++];
if((index*+)<=n) inOrder(*index+);
} int main(){
int n;
scanf("%d",&n); for(int i=;i<=n;i++){
scanf("%d",&a[i]);
} sort(a+,a+n+);
inOrder(); for(int i=;i<=n;i++){
printf("%d",t[i]);
if(i!=n) printf(" ");
} system("pause");
return ;
}