PAT (Advanced Level) 1099. Build A Binary Search Tree (30) 中序遍历往BST中填数据
2015-08-01 14:05
495 查看
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.
Given the structure of a binary tree and a sequence of distinct integer keys, there is only one way to fill these keys into the tree so that the resulting tree satisfies the definition of a BST. You are supposed to output the level order traversal sequence
of that tree. The sample is illustrated by Figure 1 and 2.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=100) which is the total number of nodes in the tree. The next N lines each contains the left and the right children of a node in the format "left_index right_index",
provided that the nodes are numbered from 0 to N-1, and 0 is always the root. If one child is missing, then -1 will represent the NULL child pointer. Finally N distinct integer keys are given in the last line.
Output Specification:
For each test case, print in one line the level order traversal sequence of that tree. All the numbers must be separated by a space, with no extra space at the end of the line.
Sample Input:
Sample Output:
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.
Given the structure of a binary tree and a sequence of distinct integer keys, there is only one way to fill these keys into the tree so that the resulting tree satisfies the definition of a BST. You are supposed to output the level order traversal sequence
of that tree. The sample is illustrated by Figure 1 and 2.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=100) which is the total number of nodes in the tree. The next N lines each contains the left and the right children of a node in the format "left_index right_index",
provided that the nodes are numbered from 0 to N-1, and 0 is always the root. If one child is missing, then -1 will represent the NULL child pointer. Finally N distinct integer keys are given in the last line.
Output Specification:
For each test case, print in one line the level order traversal sequence of that tree. All the numbers must be separated by a space, with no extra space at the end of the line.
Sample Input:
9 1 6 2 3 -1 -1 -1 4 5 -1 -1 -1 7 -1 -1 8 -1 -1 73 45 11 58 82 25 67 38 42
Sample Output:
58 25 82 11 38 67 45 73 42/*2015.8.1cyq*/ #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <fstream> using namespace std; //ifstream fin("case1.txt"); //#define cin fin struct node{ int val; int left; int right; }; //中序遍历填入数据 void inOrder(vector<node> &tree,int root,const vector<int> &a,int &index){ if(root!=-1){ inOrder(tree,tree[root].left,a,index); tree[root].val=a[index++]; inOrder(tree,tree[root].right,a,index); } } int main(){ int N; cin>>N; vector<node> tree(N); for(int i=0;i<N;i++){ cin>>tree[i].left; cin>>tree[i].right; } vector<int> a(N); for(int i=0;i<N;i++) cin>>a[i]; sort(a.begin(),a.end());//对数组排序 int index=0; inOrder(tree,0,a,index);//中根遍历填入数据 vector<int> result; queue<node> cur; cur.push(tree[0]); while(!cur.empty()){//层序遍历,BFS node tmp=cur.front(); cur.pop(); result.push_back(tmp.val); if(tmp.left!=-1) cur.push(tree[tmp.left]); if(tmp.right!=-1) cur.push(tree[tmp.right]); } cout<<result[0]; for(int i=1;i<N;i++) cout<<" "<<result[i]; return 0; }
相关文章推荐
- DirectUI界面编程(六)实现右键弹出菜单
- DirectUI界面编程(六)实现右键弹出菜单
- DirectUI界面编程(六)实现右键弹出菜单
- Request processing failed; nested exception is java.lang.NullPointerException
- NSString+NSMutableString+NSArray+NSMutableArray+NSNumber+NSValue用法汇总
- SPOJ QTREE Query on a tree(边权LCT模板)
- NGUI之UI模块基类
- EasyUI学习网站
- druid配置
- 设置uitextview边框
- 错误提示:连接 built-in.o 提示 undefined reference to
- IOS 自定义 tableView cell(UITableViewCell height) 高度
- SolrCloud Wiki翻译(4)Distributed Requests
- UITextfield
- POJ 1679 The Unique MST
- UILabel
- 通过UIAlertView或者ActionSheet控件调用share方法
- UIView
- poj 1019 Number Sequence 【组合数学+数字x的位宽函数】
- UITableViewCell 输入框动态变高