Найти НЕ Рекурсивно высоту дерева - 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);
}
Объяснение кода листинга программы
- Входной параметр функции - VUZ_DR *kor, это указатель на узел дерева.
- Проверка на null-указатель: если kor == NULL, то возвращается 0.
- Переменные vl и vp инициализируются вызовом функции VysotaDereva с аргументами kor->liv и kor->prav соответственно.
- Вызов функции VysotaDereva с аргументом kor->liv.
- Вызов функции VysotaDereva с аргументом kor->prav.
- Возвращаемое значение функции - 1 + (vl > vp ? vl : vp).
- Функция возвращает высоту дерева, которую можно получить, вычтя из максимального значения из левого и правого поддеревьев, значение 1.