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

Сбалансированное Бинарное Дерево

Сбалансированное Бинарное Дерево

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

Реализуйте метод IsBalanced, который определит, является ли дерево сбалансированным по высоте. Дерево называется сбалансированным по высоте, если для каждой вершины высота ее левого и правого поддерева отличается не более чем на 1.

prb7463.gif

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

class TreeNode
{
public:
  int val;
  TreeNode *left, *right;
  TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

class Tree
{
public:
  TreeNode *head;
  Tree() : head(NULL) {};
  void Insert(int val); // Вставка числа val в Бинарное Дерево Поиска
  int IsBalanced(void); // Вернуть 1 если дерево сбалансировано по высоте и 0 в противном случае
};
// Java
class TreeNode
{
  int val;
  TreeNode left, right;
  TreeNode(int x)
  {
    val = x;
    left = right = null;
  }
}

class Tree
{
  TreeNode head;
  Tree();
  void Insert(int val); // Вставка числа val в Бинарное Дерево Поиска
  int IsBalanced(); // Вернуть 1 если дерево сбалансировано по высоте и 0 в противном случае
}

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

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

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

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

Создайте Бинарное Дерево Поиска из входных данных. Выведите 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
Çıxış verilənləri #1
1
Müəllif Михаил Медведев
Mənbə Язык С++ / Java