Высота бинарного дерева - это расстояние от корневого узла до дочернего узла, который находится дальше всего от корня.
Ниже приведен пример:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Высота бинарного дерева: 4
Определение двоичного дерева
Дерево - это объект, который содержит целочисленное значение со знаком и два других дерева или указатели на них.
Структура структуры двоичного дерева выглядит примерно так:
typedef struct tree
{
struct tree * l;
struct tree * r;
int v;
} tree;
Соревнование:
вход
Корень бинарного дерева
Выход
Число, представляющее высоту двоичного дерева
Предполагая, что вам дан корень двоичного дерева в качестве входных данных, напишите самую короткую программу, которая вычисляет высоту двоичного дерева и возвращает высоту. Программа с наименьшим количеством байтов (учет пробелов) выигрывает.
h
. Возможно, для этой задачи лучше определить конкретную структуру, состоящую только из списков.
[root_value, left_node, right_node]
котором допустимо каждое из двоичных деревьев, left_node
а right_node
также? Это будет тривиально на многих языках, но может быть забавным на некоторых других.
a tree is an object that contains a value and either two other trees or pointers to them
. Определение, включающее языки без объектов, также было бы неплохо.