Оценка O(log n + m) является правильной и не может быть выведена рекуррентным соотношением из-за связанных с ней условий в функции. В функции есть два рекурсивных вызова, однако они не происходят всегда.
Первый рекурсивный вызов происходит, когда значение node->key не находится в заданном интервале. Это происходит, когда node->key < min или node->key > max. Таким образом, при нарушении любого из этих условий будет произведен только один рекурсивный вызов. Таким образом, на каждом уровне дерева будет только один вызов.
Затем происходят вызовы в вершины, находящиеся внутри интервала, и могут быть вызовы за границами интервала. Количество вызовов за границами интервала не превышает двух на каждом уровне дерева - один вызов в числах меньше min и один вызов в числах больше max.
Рассмотрим сценарий, где мы пребываем в вершине внутри интервала (A). Мы можем перейти из этой вершины в вершину вне интервала слева (B) или в вершину вне интервала справа (C). Однако, все ключи в поддереве C не меньше, чем A, поэтому ни один из них не будет выходить за пределы интервала влево. Таким образом, "плохие" вершины вне интервала слева, которые мы посещаем, никогда не встретятся. Таким образом, на следующем уровне может быть не более одной "плохой" вершины слева - правый ребенок B. Аналогичные рассуждения показывают, что на каждом уровне может быть не более одной "плохой" вершины справа.
Таким образом, оценка O(log n + m) объединяет вызовы функции внутри и за пределами интервала, и учитывает максимальное количество таких вызовов на каждом уровне дерева.