HDOJ 题目3999 The order of a Tree(二叉树)
2014-12-11 10:39
330 查看
The order of a Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1175 Accepted Submission(s): 605
[align=left]Problem Description[/align]
As we know,the shape of a binary search tree is greatly related to the order of keys we insert. To be precisely:
1. insert a key k to a empty tree, then the tree become a tree with
only one node;
2. insert a key k to a nonempty tree, if k is less than the root ,insert
it to the left sub-tree;else insert k to the right sub-tree.
We call the order of keys we insert “the order of a tree”,your task is,given a oder of a tree, find the order of a tree with the least lexicographic order that generate the same tree.Two trees are the same if and only if they have the same shape.
[align=left]Input[/align]
There are multiple test cases in an input file. The first line of each testcase is an integer n(n <= 100,000),represent the number of nodes.The second line has n intergers,k1 to kn,represent the order of a tree.To make if more simple,
k1 to kn is a sequence of 1 to n.
[align=left]Output[/align]
One line with n intergers, which are the order of a tree that generate the same tree with the least lexicographic.
[align=left]Sample Input[/align]
4
1 3 4 2
[align=left]Sample Output[/align]
1 3 2 4
[align=left]Source[/align]
2011 Multi-University Training Contest 16 - Host by TJU
[align=left]Recommend[/align]
lcy | We have carefully selected several similar problems for you: 4000 1710 3627 3998 3996
ac代码
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct s { int data; struct s *l,*r; }tree; void build(tree * &root,int num) { if(root==NULL) { root=(tree *)malloc(sizeof(tree)); root->data=num; root->l=NULL; root->r=NULL; } else { if(num<root->data) build(root->l,num); else build(root->r,num); } } void print(tree *root,int w) { if(root==NULL) return; if(w==2) printf(" "); printf("%d",root->data); print(root->l,2); print(root->r,2); } int main() { int n;; while(scanf("%d",&n)!=EOF) { int i,num; tree *root=NULL; for(i=0;i<n;i++) { scanf("%d",&num); build(root,num); } print(root,1); printf("\n"); } }
相关文章推荐
- 多效第16场 HDU 3999 The order of a Tree(二叉树)
- HDU 3999----The order of a Tree(二叉树的前序遍历)
- HDOJ 3999 The order of a Tree(二叉排序树)
- HDU 3999----The order of a Tree(二叉树的前序遍历)
- Hdu 3999 - The order of a Tree
- HDU 3999 The order of a Tree 二叉搜索树 BST
- hdu 3999 The order of a Tree
- HDU3999 The order of a Tree(构建二叉搜索树模板指针)
- 二叉排序树:HUD3999-The order of a Tree(二叉排序树字典序输出)
- hdu 3999 The order of a Tree
- HDU 3999 The order of a Tree 二叉搜索树 BST
- hdu 3999 The order of a Tree (二叉搜索树)
- HDU 3999 The order of a Tree
- hdu 3999 The order of a Tree
- HDU(3999)The order of a Tree
- hdu 3999 The order of a Tree(二叉搜索树)
- HDU 3999 The order of a Tree
- HDU-3999 The order of a Tree 树的遍历
- HDU 3999 The order of a Tree
- hdu 3999 The order of a Tree