Uma mediana de um AVL. Como tirar proveito do AVL?


8

Aqui está a fonte da minha pergunta.

Dada uma árvore de auto balanceamento (AVL), codifique um método que retorne a mediana.

(Mediana: o valor numérico que separa a metade superior de uma amostra de dados da metade inferior. Exemplo: se a série for

2, 7, 4, 9, 1, 5, 8, 3, 6

então a mediana é 5.)

Posso oferecer a seguinte solução:

  1. Atravesse a árvore especificada e retorne o número de elementos.
  2. Atravesse n / 2 + 1(se nfor ímpar) a árvore novamente aplicando uma caminhada em árvore em ordem. O valor do n / 2 + 1elemento th é a mediana.

Mas posso fazer isso com uma árvore de pesquisa binária, não posso? Existe um algoritmo melhor para um AVL?


1
O link já responde à sua pergunta - o que mais você está procurando?
Yuval Filmus

Geralmente, os algoritmos de pesquisa para uma Árvore de Pesquisa Binária funcionam com uma árvore AVL, mas com uma AVL você obtém a garantia extra de que a altura da sua árvore é logarítmica no número de nós.
jmite

Respostas:


9

Se você modificar a árvore AVL armazenando o tamanho da subárvore em cada nó, e não apenas na altura, poderá encontrar a mediana no tempo O(logn)usando o fato de que a árvore está equilibrada. Para isso, escreva um procedimento mais geral. Selecione qual aceita um nó.v e um número ke encontra o ko menor nó da subárvore com raiz em v.

Suponha que a subárvore esquerda (se houver) tenha Lnós. E sekLentão recursamos para a subárvore esquerda. E sek=L+1 então voltamos v. Caso contrário, recuaremos para a subárvore direita, reduzindok de L+1.

O tempo de execução desse algoritmo é linear na altura da árvore, que é O(logn).


Você poderia me dar um exemplo?
Maksim Dmitriev

Não, você terá que construir um você mesmo. Tente entender o que meu algoritmo está tentando realizar e como.
Yuval Filmus


0

AVL é uma árvore de pesquisa binária com alguma propriedade especial: é uma árvore de auto-equilíbrio. Sua altura é sempre logarítmica. A árvore binária comum em um dos piores cenários pode ser uma lista vinculada (se você adicionar dados classificados) para que a altura seja n. A árvore AVL no pior cenário é a árvore de fibonacci.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.