eolymp
bolt
Try our new interface for solving problems
Problems

Invert a Tree

Invert a Tree

Given an array of integers. Create a Binary Search Tree from these numbers. If the inserted value equals to the current node, insert it to the right subtree.

Write a method InvertTree that inverts a binary tree.

prb7455.gif

Inverted tree:

prb7455_1.gif

Write the code according to the next interface:

class TreeNode

{

public:

int val;

TreeNode *left;

TreeNode *right;

TreeNode(int x) : val(x), left(NULL), right(NULL) {}

};

class Tree

{

public:

TreeNode *head;

Tree() : head(NULL) {};

void Insert(int val); // Insert number val to Binary Search Tree

void InOrder(void); // Print the elements of Binary Search Tree in InOrder Traversal

void InvertTree(void); // Reverse a Binary Search Tree

};

You can create (use) additional methods if needed.

Input

The first line contains number n (1n100). The second line contains n integers.

Output

Create the Binary Search Tree from input data. Reverse a tree using InvertTree method. Print the elements of Binary Search Tree after rotation using InOrder method.

Time limit 1 second
Memory limit 64 MiB
Input example #1
6
14 17 9 20 15 1
Output example #1
20 17 15 14 9 1 
Author Mykhailo Medvediev
Source C++ Language