Logo a recorrência para o tempo de execução do pior caso do merge sorte é dada por: \(T(n) = \begin{cases} \: \Theta(1) & \quad se \: n = 1 \\ \: 2T(n/2) + \Theta(n) & \quad se \: n \gt 1 \\ \end{cases}\)
Intuitivamente, podemos resolver essa recorrência. Reescrevemos a recorrência como: \(T(n) = \begin{cases} \: c & \quad se \: n = 1 \\ \: 2T(n/2) + cn & \quad se \: n \gt 1 \\ \end{cases}\)
insert(node.left, k) if k < node.key else insert(node.right, k)
Fator de balanceamento válido: $ | FB | \lt 2$ |
if FB(node) == -2: if FB(node.left) == +1: rotate_left(node.left) rotate_right(node) if FB(node) == +2: if FB(node.right) == -1: rotate_right(node.right) rotate_left(node)
is_valid_avl(node)
. Qual a complexidade de tempo dessa função?