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.
Inverted tree:
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 (1 ≤ n ≤ 100). 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.