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

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

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

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

Реализуйте метод 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 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
6
14 17 9 20 15 1
Вихідні дані #1
20 17 15 14 9 1 
Автор Михайло Медведєв
Джерело Мова С++