Есть для высоты дерева:
public static void HeigthTree(Node t, ref int count, ref int heigth)
{
if (t!=null) // если текущий узел не пустой
{
if (count > heigth) //и длина пути от корня до текущего узла больше высоты дерева, то
{
heigth=count; // полагаем в качестве высоты дерева длину пути до текущего узла
}
count++; // в любом случае увеличиваем длину пути от корня до текущего узла
HeigthTree(t.left, ref count, ref heigth); //обходим левое поддерево
HeigthTree(t.rigth, ref count, ref heigth); //обходим правое поддерево
count--; //после чего уменьшаем длину пути от корня до текущего узла
}
}
Высота узла-это длина пути от этого узла к самому нижнему листу.Вопрос,как реализовать эту самую высоту...
Слишком много параметров. Попробуйте следующую рекурсию:
static int height(Node node) {
if(node == null) return 0;
//находим высоту правой и левой ветки, и из них берем максимальную
//todo если дерево не бинарное, то для поиска макс ветки реализовать цикл
return 1 + Math.max(height(node.left), height(node.right));
}
Так как само дерево также является экземляром Node
, то для нахождения высоты дерева:
int height = height(tree);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу организовать рекурсиюПодскажи, где нужно исправить, чтобы функция правильно работала
Как получить число (int), полученное в результате такого SQL-запроса:
Всем привет, проблема такая, что не могу сделать запись в определенный файл, создается всегда новый файл