Задача A. Высота дерева
Реализуйте бинарное дерево поиска для целых чисел. Программа получает на вход последовательность целых чисел и строит из них дерево. Элементы в деревья добавляются в соответствии с результатом поиска их места. Если элемент уже существует в дереве, добавлять его не надо. Балансировка дерева не производится.
На вход программа получает последовательность натуральных чисел. Последовательность завершается числом 0, которое означает конец ввода, и добавлять его в дерево не надо.
Выведите единственное число – высоту получившегося дерева.
Пример соответствует следующему дереву:

7 3 2 1 9 5 4 6 8 0
4
Задача B. Количество элементов
Подсчитайте количество элементов в получившемся дереве и выведите это количество.
Вводится последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит.
Выведите ответ на задачу.
7 3 2 1 9 5 4 6 8 0
9
Выведите второй по величине элемент в построенном дереве. Гарантируется, что такой найдется.
Дана последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит.
Выведите ответ на задачу.
7 3 2 1 9 5 4 6 8 0
8
Задача D. Обход
Выведите все элементы полученного дерева в порядке возрастания.
Вводится последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит. По данной последовательности требуется построить дерево.
Выведите ответ на задачу.
7 3 2 1 9 5 4 6 8 0
1 2 3 4 5 6 7 8 9
Задача E. Вывод листьев
Для полученного дерева выведите список всех листьев (вершин, не имеющих потомков) в порядке возрастания.
Вводится последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит.
Выведите ответ на задачу.
7 3 2 1 9 5 4 6 8 0
1 4 6 8
Задача F. Вывод развилок
Для полученного дерева выведите список всех вершин, имеющих по два ребёнка, в порядке возрастания.
Вводится последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит. Постройте по этой последовательности дерево.
Выведите ответ задачи.
7 3 2 1 9 5 4 6 8 0
3 5 7
Задача G. Вывод веток
Для полученного дерева выведите список всех вершин, имеющих только одного ребёнка, в порядке возрастания.
Вводится последовательность целых чисел,оканчивающаяся нулем. Построить по ней дерево.
Выведите список требуемых вершин.
7 3 2 1 9 5 4 6 8 0
2 9
Задача H. Сбалансированность
Дерево называется сбалансированным, если для любой его вершины высота левого и правого поддерева для этой вершины различаются не более чем на 1.
Вводится последовательность целых чисел, оканчивающаяся нулем. Сам ноль в последовательность не входит. Постройте дерево, соответствующее данной последовательности.
Определите, является ли дерево сбалансированным, выведите слово YES или NO.
7 3 2 1 9 5 4 6 8 0
YES
Задача I. Частоты появления элементов
По данной последовательности постройте дерево, запоминая для каждого элемента его значение и количество его повторений в последовательности.
Вводится последовательность целых чисел, заканчивающаяся нулем. Сам ноль в последовательность не входит.
Выведите на экран содержимое дерева в порядке возрастания, по одному элементу на строку. В каждой строке выводите значение элемента, затем, через пробел, укажите, сколько раз он встречается в исходной последовательности.
7 3 2 1 9 5 4 6 8 0
1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1