Найти НЕ Рекурсивно высоту дерева - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д