Найти НЕ Рекурсивно высоту дерева - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно не рекурсивно найти высоту бинарного дерева =/ Проблема в том, что рекурсивно все просто и понятно, но переделать рекурсию в итерацию у меня не получается, пытался кто-то не рекурсивно оперделить высоту?

Решение задачи: «Найти НЕ Рекурсивно высоту дерева»

textual
Листинг программы
int VysotaDereva(VUZ_DR *kor)
{
    if(kor==NULL)
        return 0;
    int vl,vp;
    vl=VysotaDereva(kor->liv);  
    vp=VysotaDereva(kor->prav);
    return 1+(vl>vp?vl:vp); 
}

Объяснение кода листинга программы

  1. Входной параметр функции - VUZ_DR *kor, это указатель на узел дерева.
  2. Проверка на null-указатель: если kor == NULL, то возвращается 0.
  3. Переменные vl и vp инициализируются вызовом функции VysotaDereva с аргументами kor->liv и kor->prav соответственно.
  4. Вызов функции VysotaDereva с аргументом kor->liv.
  5. Вызов функции VysotaDereva с аргументом kor->prav.
  6. Возвращаемое значение функции - 1 + (vl > vp ? vl : vp).
  7. Функция возвращает высоту дерева, которую можно получить, вычтя из максимального значения из левого и правого поддеревьев, значение 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы