Árvores Binárias de Busca (BST, do inglês Binary Search Tree) são estruturas de dados em forma de árvore, composta por nós interligados. Cada nó pode ter no máximo dois filhos, geralmente denominados “esquerdo” e “direito”. Cada nó da árvore contém um valor ou informação associada, e os nós filhos são organizados de acordo com uma relação de ordem.
Como um desenvolvedor experiente com mais de 30 anos de carreira na área de tecnologia, eu tive a oportunidade de trabalhar com uma variedade de algoritmos e estruturas de dados ao longo dos anos. Um dos mais importantes e úteis para resolver muitos problemas de programação é a Árvore Binária de Busca.
Related Posts
Percursos = são os algoritmos (normalmente algoritmos recursivos) que passam por todos os nós da árvore, existem 3 percursos recursivos principais: em ordem (simétrica), pré-ordem e pós-ordem. Suas estruturas de recursão são bem parecidas, se diferenciam apenas na ordem de acesso aos nós.
Quando aumentamos a árvore, levamos em consideração que devemos ser capazes de manter as informações adicionadas, bem como fazer outras operações, como inserção, exclusão e atualização em um tempo O(lg n).
Veja outros artigos relacionados
Altura de um nó = a quantidade de pais que é necessária para se chegar até a raiz é a altura desse nó, por exemplo se tivermos uma árvore com uma configuração dessa forma: A tem B e C como filhos, B tem X e Y como filhos, teríamos o seguinte: A tem altura 0, B e C, 1 e X e Y, com altura 2.
Primeiramente, criamos a classe para representar a árvore de busca binária e depois criamos a função de adição de um nó a ela. Observe que essa função também confere o balanceamento da árvore a cada adição de termo.
Sempre que um elemento precisa ser pesquisado, comece a pesquisa a partir do nó raiz. Depois, se os dados forem menores do que o valor-chave, pesquise o elemento na subárvore da esquerda. Do contrário, pesquise o elemento na subárvore da direita. Siga o mesmo algoritmo para cada nó.
Primeiros passos
A busca em largura é um algoritmo usado para fazer a travessia de uma BST. Ela começa no nó raiz e viaja de modo lateral (de um lado para outro), buscando pelo nó desejado. Este tipo de busca pode ser descrito como O(n), dado que cada nó é visitado uma vez e que o tamanho da árvore está correlacionado diretamente com o tamanho da busca.
Podemos usar árvores para diversas situações, desde sistema para cálculos de probabilidade de vitórias em campeonatos de futebol, até sistema de listagem de dados dinamicamente agrupados a partir de opções vindas do usuário.
A estrutura da árvore binária de busca permite uma busca eficiente em tempo logarítmico, ou seja, O(log n), onde n é o número de elementos na árvore. Essa eficiência é alcançada porque a árvore é estruturada de tal forma que as comparações para encontrar um elemento são realizadas em caminhos únicos e ordenados.
Uma árvore binária é uma estrutura de dados que é capaz de agrupar informações em formato de árvore, na verdade uma árvore binária é bem parecida com um grafo, mas com a ressalva de que ela possui apenas cada nó com apenas dois filhos e um ponto que é pai de todos os outros indiretamente, que é chamado de raiz.
Ordenação de dados: essa estrutura mantém os elementos ordenados de acordo com uma chave, o que é muito útil em cenários onde os dados precisam estar ordenados, como em séries temporais.
Algoritmos e Estruturas de Dados
As árvores binárias de busca são uma estrutura de dados fundamental na ciência da computação e podem ser usadas para resolver uma variedade de problemas de programação. Elas permitem uma busca eficiente e são facilmente implementadas em várias linguagens de programação.
Esse conteúdo é parte do material disponibilizado para os participantes do meu grupo de estudos de Algoritmos e Estruturas de Dados. Você quer participar desse grupo? Clique aqui e veja como funciona.
Grau de um nó = é semelhante a altura mas sendo que é a contagem inversa. Ao invés de a quantidade de pais até a raiz, a contagem se baseia pela quantidade de filhos até a folha mais longe. No exemplo acima, teríamos: A com grau 2, B e C com grau 1 e X e Y com grau 0.
Aplicações
A classe BinarySearchTree é a árvore em si, e contém uma referência para o nó raiz (Root). A classe oferece um método Insert que insere um novo nó na árvore. Esse método começa procurando o lugar correto para inserir o novo nó, percorrendo a árvore a partir do nó raiz e seguindo sempre para a esquerda se o valor do novo nó for menor que o valor do nó atual, ou para a direita se for maior ou igual.
Primeiramente, criamos a função de remoção de nó na classe BST. Observe que essa função também confere o balanceamento da árvore a cada remoção, assim como a função de inserir.
Predecessores podem ser descritos como os nós que vêm logo antes do nó em que você se encontra no momento. Para encontrar o predecessor do nó atual, olhe para o maior nó folha/mais à direita na subárvore esquerda.
Fique por dentro das novidades
A classe Node representa um nó da árvore, que contém um valor inteiro (Value) e duas referências a outros nós, um para o filho à esquerda (Left) e outro para o filho à direita (Right).
Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n).
Uma árvore binária de busca serve para o armazenamento de dados na memória do computador e a sua subseqüente recuperação. Em uma árvore binária de busca cada nó contém um campo chamado key, podendo haver outras informações, além dos ponteiros left e right.
Como ordenar uma árvore binária?
Um modo de ordenar vectores: Inserir os elementos a ordenar numa árvore binária....Modos de visita:
Escreva um método que imprima as chaves de uma BT em in-ordem (ou seja, na ordem esquerda-raiz-direita); use recursão. Repita para pós-ordem (ordem esquerda-direita-raiz). Repita para pré-ordem (ordem raiz-esquerda-direita). Use uma fila para armazenar as chaves antes de imprimir.
Qual a utilidade de uma estrutura de dados árvore binária?
Uma árvore binária é uma estrutura de dados útil quando precisam ser tomadas decisões bidirecionais em cada ponto de um processo. Por exemplo, suponha que precisemos encontrar todas as repetições numa lista de números. Uma maneira de fazer isto é comparar cada número com todos que o precedem.
O que é a altura de uma árvore binária?
A altura de um nó x em uma árvore binária é a distância entre x e o seu descendente mais afastado. Mais precisamente, a altura de x é o número de passos no mais longo caminho que leva de x até uma folha.
Como saber se a árvore e Binaria?
Um nó x juntamente com todos os seus descendentes é uma árvore binária . Dizemos que x é a raiz (= root) da árvore. Se x tiver um pai, essa árvore é subárvore de alguma árvore maior. Se x é NULL, a árvore é vazia.
Como saber se uma árvore e Binaria?
Uma árvore binária é considerada estritamente binária se cada nó da árvore possui grau zero ou dois. A profundidade de um nó é a distância deste nó até a raiz. Um conjunto de nós com a mesma profundidade é denominado nível da árvore.
Qual o grau da árvore?
Grau de uma árvore (aridade): é definido como sendo igual ao máximo dos graus de todos os seus nós. A árvore do próximo slide tem grau 3. Cada nó tem que ser atingível a partir da raiz através de uma sequência única de arcos, chamados de caminho. Nível de um nó: é a sua distância da raiz da árvore.
Como criar uma árvore binária em C?
Em uma árvore binária um elemento pode ter um máximo de dois filhos no nível inferior denominados como sub-árvore esquerda e sub-árvore direita.Um nó sem filhos é chamado de folha. A profundidade de um nó é a distância desse nó até a raiz e a distância entre a folha mais distante e a raiz é a altura da árvore.
O que é um nó de busca?
Em Ciência da computação, uma árvore binária de busca (ou árvore binária de pesquisa) é uma estrutura de dados de árvore binária baseada em nós, onde todos os nós da subárvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da subárvore direita possuem um valor superior ao nó raiz (esta é a forma ...
Como identificar o grau de uma árvore binária?
Uma árvore binária é uma árvore cujos nós tem dois filhos (alguns vazios) e cada filho é designado como filho à esquerda ou filho à direita. Portanto, a árvore binária tem grau máximo 2. Nó filho ESQUERDO e Nó filho DIREITO. subárvore esquerda e a direita de r, respectivamente, as quais são também árvores binárias.
Onde usar árvore binária?
Perceba que a definição é recursiva e, devido a isso, muitas operações sobre árvores binárias utilizam recursão. É o tipo de árvore mais utilizado na computação. A principal utilização de árvores binárias são as árvores de busca.
Como calcular a altura de uma árvore binária?
A altura (= height) de um nó h em uma árvore binária é a distância entre h e o seu descendente mais afastado. Mas precisamente, a altura de h é o número de links no mais longo caminho que leva de h até uma folha.
Como saber o grau de uma árvore binária?
Uma árvore binária é uma árvore cujos nós tem dois filhos (alguns vazios) e cada filho é designado como filho à esquerda ou filho à direita. Portanto, a árvore binária tem grau máximo 2. Nó filho ESQUERDO e Nó filho DIREITO. subárvore esquerda e a direita de r, respectivamente, as quais são também árvores binárias.
Como saber o tamanho de uma árvore binária?
Altura e profundidade A altura de um nó x em uma árvore binária é a distância entre x e o seu descendente mais afastado. Mais precisamente, a altura de x é o número de passos no mais longo caminho que leva de x até uma folha.
Quais são os filhos do no W de uma árvore binária?
Figura (a): árvore ternária. O nó w possui um único filho, mas é possível referenciar as três subárvores de w, duas das quais vazias ( primeira e terceira ).
Qual a diferença entre uma árvore binária de busca e uma árvore binária?
Uma árvore binária é uma árvore cujos filhos nunca têm mais que dois. Uma árvore de pesquisa binária segue a invariante de que o filho esquerdo deve ter um valor menor que a chave do nó raiz, enquanto o filho direito deve ter um valor maior que a chave do nó raiz. Nenhuma ordem classificada precisa ser encontrada.
Como saber se uma árvore e AVL?
Uma árvore AVL é uma árvore na qual as alturas das subárvores esquerda e direita de cada nó diferem no máximo por uma unidade. Se o fator de balanceamento de qualquer nó ficar menor do que -1 ou maior do que 1 então a árvore tem que ser balanceada.