У меня возникли проблемы с приближением времени работы функции, вызывающей другие функции. Например, здесь это функция, которая преобразует бинарное дерево в список:вычислить время работы функции
(define (tree->list-1 tree)
(if (null? tree)
’()
(append (tree->list-1 (left-branch tree))
(cons (entry tree)
(tree->list-1 (right-branch tree))))))
Объяснение Т (п) = 2 * Т (п/2) + O (N/2), так как процедура Append принимает линейное время. Решая выше уравнение, получаем T (n) = O (n * log n).
Однако минусы также являются процедурой, которая объединяет два элемента. В этом случае он проходит через все входные узлы, почему бы нам не добавить еще один O (n) в решении?
Благодарим за помощь.
O (n * log (n) + n) = O (n * log (n)) –