Двоичное дерево поиска

Задача

Реализовать класс BinaryTree, который бы обеспечивал логарифмическую сложность поиска и добавления нового элемента.

Указания по выполнению

Лабораторная работа состоит из двух файлов:

  • BinaryTree.java — описание класса binary_tree, прототипы методов, реализация методов
  • TestBinaryTree.java — тестирование и проверка возможностей класса

Необходимо создать вспомогательную шаблонную структуру, содержащую поле для хранения значения произвольного типа и 2 поля для хранения ссылок на левого и правого потомков.

Класс BinaryTree должен быть шаблонным.

Класс BinaryTree должен содержать следующие поля:

  • ссылку на корневой элемент
  • число элементов в дереве

Класс BinaryTree должен содержать следующие методы:

  • конструктор
  • конструктор копирования
  • добавление элемента
  • поиск элемента
  • удаление всех элементов
  • необходимые интерфейсы (в зависимости от реализации)