1099. Build A Binary Search Tree (30)
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
This problem only needs to know that the pre-sequence of BST to increment sequence can easily set the values of each node
1#include <iostream>2#include <vector>3#include <algorithm>4#include <queue>5 6 using namespacestd;7 8 structNode9 {Ten intvalue; One intleft =-1; A intright =-1; - }; - theNode tree[ -]; - intnum[ -]; - intCNT =0; - + voidPretraversal (intRoot//Use preorder traversal to set the value - { + if(Root = =-1) A return; at pretraversal (tree[root].left); -Tree[root].value = num[cnt++]; - pretraversal (tree[root].right); - } - - voidLeveltraversal (introot) in { -queue<int>que; to Que.push (root); + while(!que.empty ()) - { the intindex =Que.front (); * Que.pop (); $ if(Index! =root)Panax Notoginsengcout <<" "; -cout <<Tree[index].value; the if(Tree[index].left! =-1) + Que.push (tree[index].left); A if(Tree[index].right! =-1) the Que.push (tree[index].right); + } - } $ $ intMain () - { - intN; theCIN >>N; - for(inti =0; I < n; i++)WuyiCIN >> Tree[i].left >>Tree[i].right; the for(inti =0; I < n; i++) -CIN >>Num[i]; WuSort (num, num +n); - AboutPretraversal (0); $Leveltraversal (0); -}
PAT 1099. Build A Binary Search Tree (30)