eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Инвертирование дерева

Инвертирование дерева

Лимит времени 1 секунда
Лимит использования памяти 64 MiB

Задан массив целых чисел. Создайте из них Бинарное Дерево Поиска. Если вставляемое значение равно текущей вершине, то его следует вставлять в правое поддерево.

Реализуйте метод InvertTree, который инвертирует бинарное дерево.

prb7455.gif

Инвертированное дерево:

prb7455_1.gif

Напишите код согласно следующего интерфейса:

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); // Вставка числа val в Бинарное Дерево Поиска

void InOrder(void); // Выведите элементы Бинарного Дерева Поиска при InOrder обходе

void InvertTree(void); // Инвертирование Бинарного Дерева Поиска

};

Вы можете создавать (использовать) по необходимости дополнительные методы.

Входные данные

Первая строка содержит число n (1n100). Вторая строка содержит n целых чисел.

Выходные данные

Создайте Бинарное Дерево Поиска из входных данных. Инвертируйте дерево используя метод InvertTree. Выведите элементы Бинарного Дерева Поиска после инвертирования используя метод InOrder.

Пример

Входные данные #1
6
14 17 9 20 15 1
Выходные данные #1
20 17 15 14 9 1 
Автор Михаил Медведев
Источник Язык С++