Найти высоту заданного узла дерева

233
19 февраля 2017, 08:15

Есть для высоты дерева:

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--; //после чего уменьшаем длину пути от корня до текущего узла
      }
}

Высота узла-это длина пути от этого узла к самому нижнему листу.Вопрос,как реализовать эту самую высоту...

Answer 1

Слишком много параметров. Попробуйте следующую рекурсию:

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);
READ ALSO
Сериализация Xml: пустая строка

Сериализация Xml: пустая строка

Имеется следующий код:

269
Нужна помощь, рекурсия [требует правки]

Нужна помощь, рекурсия [требует правки]

Не могу организовать рекурсиюПодскажи, где нужно исправить, чтобы функция правильно работала

242
Как получить int значения из SQL-запроса

Как получить int значения из SQL-запроса

Как получить число (int), полученное в результате такого SQL-запроса:

240
Открытие файла эксель на языке C#

Открытие файла эксель на языке C#

Всем привет, проблема такая, что не могу сделать запись в определенный файл, создается всегда новый файл

261