A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:
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 0Sample Output:
6 3 8 1 5 7 9 0 2 4
#include <stdio.h> void sort(int *keys, int n) { //元素并不多,直接用插入排序 for (int i = 1; i < n; ++i) { int temp = keys[i]; int j = i - 1; while (j >= 0 && keys[j] > temp) { keys[j + 1] = keys[j]; --j; } keys[j + 1] = temp; } } int main() { freopen("test.txt", "r", stdin); int n; scanf("%d", &n); int keys[1000] = {}; for (int i = 0; i < n; ++i) scanf("%d", &keys[i]); sort(keys, n); //对关键字进行排序 int CBT[1001] = {}; //层序顺序保存树,1位置为树根,则i的左右儿子分别为2*i和2*i+1; 类似堆 int heap[1001] = {}; //用于中序遍历的堆 int root = 1, k = 0, heapSize = 0; //k:已遍历元素的个数; heapSize:堆中元素个数 //中序遍历的非递归实现过程;因为中序遍历搜索时可以得到各节点的排序,所以根据中序遍历顺序依次填充关键字可以得到答案 while (root <= n || heapSize) { //树或者堆部位空 while (root <= n) { //沿着左子树路径找到最左叶节点,并将路径上的所有节点压栈 heap[heapSize++] = root; //入栈 root *= 2; //指向左子树 } if (heapSize) { root = heap[--heapSize]; //弹出栈顶元素 CBT[root] = keys[k++]; //填充当前最小关键字 root = 2 * root + 1; //转向右子树 } } for (int i = 1; i <= n; ++i) { //按照层序顺序输出CBT if (i != 1) printf(" "); printf("%d", CBT[i]); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
04-树8. Complete Binary Search Tree (30)
原文:http://blog.csdn.net/ice_camel/article/details/47053959