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 or equal to the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- Both the left and right subtrees must also be binary search trees.
Insert a sequence of numbers into an initially empty binary search tree. Then you are supposed to count the total number of nodes in the lowest 2 levels of the resulting tree.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤) which is the size of the input sequence. Then given in the next line are the N integers in [which are supposed to be inserted into an initially empty binary search tree.
Output Specification:
For each case, print in one line the numbers of nodes in the lowest 2 levels of the resulting tree in the format:
n1 + n2 = n
where n1
is the number of nodes in the lowest level, n2
is that of the level above, and n
is the sum.
Sample Input:
925 30 42 16 20 20 35 -5 28
Sample Output:
2 + 4 = 6
1 #include2 #include 3 #include 4 using namespace std; 5 struct Node 6 { 7 int v; 8 Node *l, *r; 9 Node(int a = -1) :v(a), l(nullptr), r(nullptr) {}10 };11 Node* root = nullptr;12 int n, level = -1, a;13 vector res;14 void creatTree(Node*& root, int x)15 {16 if (root == nullptr)17 {18 root = new Node(x);19 return;20 }21 if (x <= root->v)22 creatTree(root->l, x);23 else24 creatTree(root->r, x);25 }26 void BFS(Node* root)27 {28 queue q;29 q.push(root);30 while (!q.empty())31 {32 int num = 0;33 queue temp;34 while (!q.empty())35 {36 Node* p = q.front();37 q.pop();38 num++;39 if (p->l != nullptr)40 temp.push(p->l);41 if (p->r != nullptr)42 temp.push(p->r);43 }44 q = temp;45 res.push_back(num);46 }47 }48 int main()49 {50 51 cin >> n;52 while (n--)53 {54 cin >> a;55 creatTree(root, a);56 }57 BFS(root);58 cout << res[res.size() - 1] << " + " << res[res.size() - 2] << " = " << res[res.size() - 1] + res[res.size() - 2] << endl;59 return 0;60 }