Симметричное дерево
Заданы два массива целых чисел: массив ключей и массив ассоциированных с ними значений. Создайте из них Бинарное Дерево Поиска. Если вставляемый ключ равен ключу в текущей вершине, то его следует вставлять в правое поддерево.
Реализуйте метод IsSymmetric, который определит, является ли дерево из ассоциированных значений зеркальным отображением самого себя (то есть симметричным относительно центра).
Напишите код согласно следующего интерфейса:
// C / C++ class TreeNode { public: int key; int val; TreeNode *left, *right; TreeNode(int key, int val) : key(key), val(val), left(NULL), right(NULL) {} }; class Tree { public: TreeNode *head; Tree() : head(NULL) {}; void Insert(int key, int val); // Вставка вершины в Бинарное Дерево Поиска int IsSymmetric(void); // Вернуть 1 если дерево из ассоциированных значений симметрично и 0 в противном случае };
// Java class TreeNode { int key, val; TreeNode left, right; TreeNode(int key, int val) { this.key = key; this.val = val; left = right = null; } } class Tree { TreeNode head; Tree(); void Insert(int key, int val); // Вставка вершины в Бинарное Дерево Поиска int isSymmetric(); // Вернуть 1 если дерево из ассоциированных значений симметрично и 0 в противном случае }
Вы можете создавать (использовать) по необходимости дополнительные методы.
Входные данные
Первая строка содержит число n (1 ≤ n ≤ 100). Вторая строка содержит n целых чисел - ключи: key[1], key[2], ..., key[n]
. Третья строка содержит n целых чисел - ассоциированные значения val[1], val[2], ..., val[n]
. Значения val[i]
ассоциированы с ключом key[i]
.
Выходные данные
Создайте Бинарное Дерево Поиска из входных данных. Выведите 1 если дерево из ассоциированных значений симметрично и 0 в противном случае.