A binary Search Tree (BST) is recursively defined as a Binary Tree which have 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 is binary search trees.
Given the structure of a binary tree and a sequence of distinct integer keys, there is only one-through to fill these keys int o The tree so, the resulting tree satisfies the definition of a BST. You is 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 the one test case. For each case, the first line gives a positive integer N (<=100) which are 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 was numbered from 0 to N-1, and 0 was always the root. If one child is missing, then-1 would represent the NULL child pointer. Finally N Distinct integer keys is given in the last line.
Output Specification:
For each test case, print in one line the level order traversal sequence of this tree. All the numbers must is separated by a space, with no extra space at the end of the line.
Sample Input:
91 62 3-1-1-1 45-1-1-17-1-1 8-1-173 45 11 58 82 25 67 38 42
Sample Output:
58 25 82 11 38 67 45 73 42
1#include <stdio.h>2#include <math.h>3#include <Set>4#include <algorithm>5#include <vector>6#include <queue>7 using namespacestd;8 9 structnodeTen { One intl,r,v; A }; - -Node tree[ the]; thevector<int>VV; - intCNT =0; - voidInoder (introot) - { + if(TREE[ROOT].L! =-1) - Inoder (TREE[ROOT].L); +TREE[ROOT].V = vv[cnt++]; A if(TREE[ROOT].R! =-1) at Inoder (TREE[ROOT].R); - } - - intMain () - { - intN,tem; inscanf"%d",&n); - for(inti =0; I < n;++i) to { +scanf"%d%d",&tree[i].l,&TREE[I].R); - } the * for(inti =0; I < n;++i) $ {Panax Notoginsengscanf"%d",&tem); - Vv.push_back (TEM); the } + sort (Vv.begin (), Vv.end ()); AInoder (0); theQueue<node>QQ; +Qq.push (tree[0]); - BOOLFIR =1; $ while(!qq.empty ()) $ { -Node Ntem =Qq.front (); - Qq.pop (); the if(FIR) - {WuyiFIR =0; theprintf"%d", NTEM.V); - } Wu Else - { Aboutprintf"%d", NTEM.V); $ } - if(NTEM.L! =-1) - Qq.push (TREE[NTEM.L]); - if(NTEM.R! =-1) A Qq.push (TREE[NTEM.R]); + } theprintf"\ n"); - return 0; $}
1099. Build A Binary Search Tree (30)