Симетричне дерево
Задано два масиви цілих чисел: масив ключів і масив значень, що з ними асоціюються. На їх основі потрібно створити Бінарне Дерево Пошуку. Якщо вставлюваний ключ дорівнює ключу в поточній вершині, його слід вставляти в праве піддерево.
Реалізуйте метод 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 в протилежному випадку.