PAT Complete Binary Search Tree (30)
题目简介:
给定一个n,再给出n个数,讲这n个数构成一颗完全二叉树,然后在层次遍历这可完全二叉树
解题思路:
1、中序遍历完全二叉树可以得到排序好的数列;
2、采用数组存储完全二叉树,这样层次遍历就变成了数组的顺序输出;
代码:
1 #include<stack> 2 #include<queue> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 #define N 1000 7 int tree[N]; 8 int nums[N]; 9 int cur=0; 10 void create(int len) 11 { 12 stack<int> s; 13 int i=0; 14 while(i<len) 15 { 16 s.push(i); 17 i+=i+1; 18 } 19 while(!s.empty()) 20 { 21 i=s.top(); 22 tree[i]=nums[cur++]; 23 s.pop(); 24 i+=i+2; 25 if(i<len) 26 { 27 while(i<len) 28 { 29 s.push(i); 30 i+=i+1; 31 } 32 } 33 } 34 } 35 int main() 36 { 37 //freopen("in.txt","r",stdin); 38 //freopen("out.txt","w",stdout); 39 int n; 40 scanf("%d",&n); 41 for(int i=0;i<n;i++) 42 { 43 scanf("%d",nums+i); 44 } 45 sort(nums,nums+n); 46 cur=0; 47 create(n); 48 for(int i=0;i<n;i++) 49 { 50 if(i) 51 { 52 printf(" %d",tree[i]); 53 } 54 else 55 { 56 printf("%d",tree[i]); 57 } 58 } 59 return 0; 60 }

浙公网安备 33010602011771号