码迷,mamicode.com
首页 > 其他好文 > 详细

PAT1064. Complete Binary Search Tree

时间:2015-02-26 21:32:47      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:


 

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:

  • The left subtree of a node contains only nodes with keys less than the node‘s key. 
  • The right subtree of a node contains only nodes with keys greater than or equal to the node‘s key. 
  • Both the left and right subtrees must also be binary search trees.

A Complete Binary Tree (CBT) is a tree that is completely filled, with the possible exception of the bottom level, which is filled from left to right.

Now given a sequence of distinct non-negative integer keys, a unique BST can be constructed if it is required that the tree must also be a CBT.  You are supposed to output the level order traversal sequence of this BST.

Input Specification:

Each input file contains one test case.  For each case, the first line contains a positive integer N (<=1000).  Then N distinct non-negative integer keys are given in the next line.  All the numbers in a line are separated by a space and are no greater than 2000.

Output Specification:

For each test case, print in one line the level order traversal sequence of the corresponding complete binary search tree.  All the numbers in a line must be separated by a space, and there must be no extra space at the end of the line.

Sample Input:

10
1 2 3 4 5 6 7 8 9 0

Sample Output:

6 3 8 1 5 7 9 0 2 4

思路:利用中序序列从小到大进行排序,思想非常好。然后在静态数组中按顺序输出本来就是层次排序。
技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 #define MAX 1010
 6 
 7 int Tree[MAX];
 8 int data[MAX];
 9 int n;
10 //int trpt=1;
11 int dpt=0;
12 void Inorder(int root)
13 {
14     if(root>n)
15       return;
16     Inorder(2*root);
17     Tree[root]=data[dpt++];
18     Inorder(2*root+1);
19 }
20 int main(int argc, char *argv[])
21 {
22 
23     scanf("%d",&n);
24     for(int i=0;i<n;i++)
25     {
26         scanf("%d",&data[i]);
27     }
28     sort(data,data+n);
29     Inorder(1);
30     for(int i=1;i<=n;i++)
31     {
32         printf("%d",Tree[i]);
33         if(i!=n)
34           putchar( );
35     }
36     putchar(\n);
37     return 0;
38 }
View Code

 

PAT1064. Complete Binary Search Tree

标签:

原文地址:http://www.cnblogs.com/GoFly/p/4302039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!