Симетричне дерево#7467

Симетричне дерево

1 секунда
128 мегабайтів
Дуже легка

Задано два масиви цілих чисел: масив ключів і масив значень, що з ними асоціюються. На їх основі потрібно створити Бінарне Дерево Пошуку. Якщо вставлюваний ключ дорівнює ключу в поточній вершині, його слід вставляти в праве піддерево.

Реалізуйте метод IsSymmetric, який визначає, чи є дерево з асоційованих значень дзеркальним відображенням самого себе (тобто симетричним відносно центру).

prb7467.gif

Напишіть код згідно з наступним інтерфейсом:

// 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 в протилежному випадку
}

Ви можете створювати (використовувати) додаткові методи за необхідності.

Вхідні дані

Перший рядок містить число (1 \le n \le 100). Другий рядок містить цілих чисел - ключі: key[1], key[2], ..., key[n]. Третій рядок містить цілих чисел - асоційовані значення val[1], val[2], ..., val[n]. Значення val[i] асоційоване з ключем key[i].

Вихідні дані

Створіть Бінарне Дерево Пошуку з вхідних даних. Виведіть 1, якщо дерево з асоційованих значень симетричне, і 0 в протилежному випадку.

Приклади

Приклад 1

Loading
Loading