mmotop20oo12
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору я нашел функцию которая работает, но вот над ее размышлением я взорвал мозг, Код: function height(p: pTree): integer; var l, r: integer; begin if p <> nil then begin l := height(p^.left); r := height(p^.right); if l > r then height := l + 1 else height := r + 1 end else height := 0; end; | она начинает присваивать сначала L значение дерева по левой стороне рекурсивно, допустим так вызвалось 3 раза, на 4ой рекурсии будет Nil слева и вернет 0, дальшей в этой 3ей рекурсии вызовет r := height(p^.right); допустим там тоже пусто и опять вернуло , дальше идет сравнение L и R, я так понял в этой 3й рекурсии, а что с чем мы сравниваем мы же нигде ничего не присваивали переменным, а точнее им после этих рекурсий присвоились 0, ну и по итогу после сравнения мы нарастим r и вернемся во 2ую рекурсию со значением l=1 но дальнейшая логика мне не понятна, да и я думаю что тут вообще не правильно размышлял. Помогите мне разобраться в этой функции Добавлено: А, все... Я разобрался. Эти рекурсии... Начал рисовать картинки и идти логикой этой функции, в итоге до меня дошло. |