Я хочу вычислить временную сложность следующего алгоритма.
У меня есть дерево AVL и пара из двух чисел (x, y), что x<y
.
Цель алгоритма - вывести все числа в дереве между x и y.
x и y определенно отсутствуют в дереве.
Моя цель - создать алгоритм, время выполнения которого равно O (logn + k), так что k - это число узлов между x и y, а n - общее количество узлов в дереве.
Мой алгоритм таков:
Функция, которая получает x и y, начинается с корня дерева и выглядит следующим образом:
если текущий узел находится между x и y - выведите его и рекурсивно вызовите левый узел с (x, текущее значение узла) и правый узел с (текущее значение узла, y).
если текущий узел меньше x - вызвать рекурсивный правый узел с (x, y)
если текущий узел больше чем y - вызвать рекурсивный левый узел с помощью (x, y)
Функция останавливается, когда достигает листа (узла, к которому не привязаны другие узлы).
Соответствует ли моя функция требованиям времени выполнения?