Árvore de busca ternária | uCoder
Árvore de busca ternária - Estrutura de dados
Uma árvore de busca ternária é uma estrutura especial de dados Trie onde os nós filhos de um Trie padrão são ordenados como uma árvore de busca binária.
Representação de árvores de busca ternárias:
Ao contrário de estrutura de dados Trie (padrão), onde cada nó contém 26 indicadores para os seus filhos, cada nó em uma árvore de busca ternária contém apenas três ponteiros:
1. O ponteiro da esquerda aponta para o nó cujo valor é menor que o valor no nó atual.
2. O ponteiro central aponta para o nó cujo valor é igual ao valor do nó atual.
3. O ponteiro da direita aponta para o nó cujo valor é maior do que o valor no nó atual.
Além dos três ponteiros acima, cada nó tem um campo para indicar dados (caracteres em caso de dicionário) e um outro campo para marcar extremidade de uma string.
Então, mais ou menos, é semelhante a BST que armazena dados com base em alguma ordem. No entanto, os dados em uma árvore de busca ternária é distribuído sobre os nós. por exemplo. São necessários 4 nós para armazenar a palavra "Geek".
A figura abaixo mostra como exatamente as palavras em uma árvore de busca ternária são armazenados?
Uma das vantagens do uso de árvores de pesquisa ternárias sobre Tries é que as árvores de pesquisa ternárias usam menos espaço (envolvem apenas três ponteiros por nó em comparação com 26 em Tries convencionais).
Tries são adequados quando existe uma distribuição adequada de palavras sobre os alfabetos para que os espaços sejam utilizados de forma mais eficiente. Caso contrário árvores de busca ternárias são melhores. Árvores de busca ternárias são eficientes para usar (em termos de espaço) quando as strings a serem ser armazenadas compartilham um prefixo comum.
Aplicações de árvores de busca ternárias:
1. árvores de busca ternárias são eficientes para consultas como "Dada uma palavra, encontrar a próxima palavra no dicionário (pesquisas de vizinhos)" ou "Encontre todos os números de telefone que começam com 9342 ou" digitando alguns caracteres iniciais em um navegador da Web exibe todos os site cujo nomes tem esse prefixo "(recurso de auto-complete)".
2. usado em verificador ortográfico: árvores de busca ternárias pode ser utilizada como um dicionário para guardar todas as palavras. Uma vez que a palavra é digitada em um editor, a palavra pode ser paralelamente procurada na árvore de busca ternária para verificar a ortografia correta.
Na sequência está a implementação C da árvore de busca ternária. As operações implementadas são, busca, inserção e transversal.
insert(&root,"cat");
insert(&root,"cats");
insert(&root,"up");
insert(&root,"bug");
Complexidade de tempo: A complexidade de tempo das operações de uma árvore de busca ternária é similar ao de uma árvore de busca binária, as operações de inserção, remoção e busca tem um tempo proporcional à altura da árvore. O espaço é proporcional ao tamanho da string a ser armazenada.