Entendo a estrutura das árvores binárias e como atravessá-las. No entanto, estou lutando para perceber seus usos, propósitos em programas e programação. Quando penso em exemplos da vida real de dados hierárquicos, eles quase certamente têm mais de 2 filhos. Por exemplo, em uma árvore genealógica, uma mãe pode ter mais de dois filhos.
As 'árvores binárias' são realmente úteis apenas para armazenar dados relacionados linearmente devido aos tempos de processamento mais rápidos em matrizes e listas? Como alternativa, eles servem a um propósito específico no armazenamento de dados hierárquicos? Nesse caso, que exemplos existem da aplicação de árvores binárias. Quais dados são tais que um nó tem no máximo 2 filhos?
data-structures
binary-tree
sw123456
fonte
fonte
Respostas:
Não, as árvores binárias não servem para armazenar dados hierárquicos no sentido em que você está pensando. O principal caso de uso para árvores n-árias, onde
n
é um número fixo, é o recurso de pesquisa rápida , não uma hierarquia semântica.Lembre-se do jogo antigo, em que uma pessoa pensa em um número entre 1 e 100, e a outra tem que adivinhar o mínimo possível de palpites, e se você errar, a pessoa que pensa no número deve lhe dizer se você é demais. alto ou muito baixo? Fica entediante depois de um tempo, porque você rapidamente descobre que sempre deve começar aos 50, depois passa para 25 ou 75 e continua dividindo o intervalo a ser pesquisado ao meio com cada nova palpite depois disso e, eventualmente, pode adivinhar qualquer número em no máximo 7 palpites, garantido.
Pode não ser um jogo divertido, mas essa propriedade é o que torna as árvores binárias (e outras n-árias) úteis: você pode usá-las para pesquisar um conjunto de dados muito grande em um período de tempo muito pequeno.
fonte
Qualquer estrutura de árvore, onde um nó pode ter um número ilimitado de filhos, pode ser implementada usando uma árvore binária.
Para cada nó na sua árvore, substitua-o por um nó com o ponteiro direito e esquerdo. O ponteiro esquerdo vai para o primeiro filho do nó. O nó direito vai para o próximo irmão do nó. Todos os filhos de um determinado nó estão em uma lista vinculada unida pelos ponteiros direitos, com o cabeçalho da lista apontado pelo ponteiro esquerdo do pai.
Sua árvore complicada e nária se tornou uma árvore simples e binária.
Estou certo de que isso está em Knuth, vol. 1 em algum lugar.
fonte
Árvores binárias por que usá-las?
Na programação, você trabalha muito com coleções do mesmo tipo de dados.
As duas maneiras básicas de armazenar esses dados são: listas e matrizes vinculadas.
Ambos vêm com vantagens e desvantagens: em uma lista vinculada, é fácil adicionar elementos em qualquer posição ou remover elementos. Mas o acesso a um elemento específico é mais difícil, porque você precisa percorrer a lista até chegar ao elemento que deseja.
Com uma matriz, o acesso a um elemento específico é fácil, mas é mais difícil inserir ou excluir um elemento porque a inserção significa: estender a matriz por um, alternar todos os elementos antes da posição de inserção 1 para a direita e inserir o elemento.
Portanto, a lista vinculada e a matriz têm desvantagens.
Árvores binárias são feitas para resolver os problemas da matriz e da lista vinculada:
Então, a árvore binária é criada para quando você tem muitos dados que são alterados regularmente.
fonte