eolymp
bolt
Try our new interface for solving problems
Məsələlər

Одинаковые деревья

Одинаковые деревья

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

Реализуйте метод IsSameTree который проверяет одинаковы ли деревья или нет. Два бинарных дерева считаются одинаковыми, если их структуры идентичны, а значения в соответствующих вершинах одинаковы.

prb7463.gif

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

// C, C++
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 в Бинарное Дерево Поиска
  int IsSameTree(Tree *p); // Вернуть 1 если текущее дерево равно p, иначе вернуть 0
};
// Java
class TreeNode
{
  int val;
  TreeNode left;
  TreeNode right;
  TreeNode(int x)
  {
    val = x;
    left = null;
    right = null;
  }
}

class Tree
{
  TreeNode head;
  Tree();
  void Insert(int val); // Вставка числа val в Бинарное Дерево Поиска
  int IsSameTree(Tree p); // Вернуть 1 если текущее дерево равно p, иначе вернуть 0
}

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

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

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

Третья строка содержит число m (1m100). Четвертая строка содержит m целых чисел.

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

Создайте два Бинарных Дерева Поиска из входных данных. Выведите 1 если они одинаковы, и 0 иначе.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
6
14 9 1 14 20 13
6
14 14 9 1 13 20
Çıxış verilənləri #1
1
Müəllif Михаил Медведев
Mənbə Язык С++ / Java