Melhor resposta
Existem diferentes tipos de estruturas de dados em árvore. Alguns deles são
- Árvore Binária : Esta é a forma mais básica de estrutura de árvore. Onde cada nó pode ter no máximo dois filhos. Uma árvore binária perfeita é uma árvore binária na qual todos os nós internos têm dois filhos e todos as folhas têm o mesmo profundidade ou o mesmo nível. Uma árvore binária completa (às vezes chamada de árvore binária apropriada [15] ou plana) é uma árvore na qual cada nó da árvore tem 0 ou 2 filhos. Em um completo árvore binária cada nível, exceto possivelmente o último, é completamente preenchido e todos os nós no último nível estão o mais à esquerda possível. No infinito completo árvore binária, cada nó tem dois filhos.
- Árvore de pesquisa binária: BST é uma árvore binária com certas propriedades como, e o filho esquerdo do nó fornecido contém um valor menor que igual ao nó fornecido e o filho à direita contém o nó maior que o nó fornecido.
- Árvore AVL ou árvore binária balanceada por altura : É uma variação da árvore binária onde a diferença de altura entre a subárvore esquerda e direita pode ser no máximo 1. Se a qualquer momento elas diferirem em mais de um, o rebalanceamento é feito para restaurar esta propriedade. Pesquisa, inserção e exclusão levam tempo O (log n) em ambos os casos médios e piores, onde n é o número de nós na árvore antes da operação.
- Árvore vermelha-preta : outra variante da árvore binária semelhante à árvore AVL, é uma árvore de pesquisa binária com equilíbrio automático. Nesta árvore, os nós são coloridos em vermelho ou preto.
- Árvore de exibição: uma árvore de exibição é uma árvore de pesquisa binária autoajustável com o propriedade adicional que elementos acessados recentemente são de acesso rápido novamente. Todas as operações normais em uma árvore de pesquisa binária são combinadas com uma operação básica, chamada splaying. Espalhar a árvore para um determinado elemento reorganiza a árvore de modo que o elemento seja colocado na raiz da árvore.
- Árvore N-ária: Nesta árvore, a limitação da árvore binária é removida. Aqui, um nó pode ter no máximo n filhos. Como a árvore binária, pode ser uma árvore n-ária completa, completa ou perfeita. N-ário é conhecido como floresta.
- Estrutura Trie : Na ciência da computação, um trie, também chamado de árvore digital e, às vezes, raiz árvore ou árvore de prefixo (já que podem ser pesquisados por prefixos), é uma estrutura de dados de árvore ordenada que é usada para armazenar um conjunto dinâmico ou array associativo onde as chaves são geralmente strings. Todos os descendentes de um nó têm um prefixo comum da string associada a esse nó, e a raiz está associada à string vazia.
- Árvore de sufixos : Trie e árvore de sufixo estão intimamente relacionadas. uma árvore de sufixos (também chamada de árvore PAT ou, em uma forma anterior, árvore de posição) é um trie compactado contendo todos os sufixos do texto fornecido como suas chaves e as posições no texto como seus valores. Árvores de sufixo permitem implementações particularmente rápidas de muitas operações de string importantes.
- Árvore de Huffman: A árvore de Huffman é uma árvore binária classificada por frequência amplamente usada na compactação dados. A árvore de Huffman é construída para alocar uma palavra de código curta para um texto longo com base em sua frequência de ocorrências.
- Estrutura de heap [Editar conforme sugerido ]: A estrutura de heap é outra estrutura de árvore amplamente usada com uma propriedade de ordenação específica. Existem dois tipos de heap – heap mínimo e heap máximo. Em um heap mínimo, o pai de um nó deve ser menor que os valores de todos os seus filhos. Da mesma forma, no heap máximo o pai sempre tem um valor maior em comparação com todos os seus filhos. Uma implementação comum de heap é Binary heap onde cada pai pode ter no máximo dois filhos.
Outra estrutura de árvore popular inclui, mas não exaustivamente, B -Tree, B + – tree, R-Tree, Counted-B Tree, KD tree (ou K-dimensional BST), árvore de decisão (a variante da árvore n-ária), árvore Markel, árvore Fenwick (ou árvore de índice binário), Árvore de intervalo.
Resposta h2 >
- Modelo como código formando uma árvore de dependências.
Agora, tenha paciência comigo por 5 minutos para explicar em detalhes como usamos a árvore como uma estrutura de dados para resolver nosso caso de uso complexo.
Para explicar o cenário, vamos dar um pequeno exemplo de obtenção de dados de uma API por meio de autenticação baseada em token.
Então, se você deseja alcançar este feito,
- primeiro você obtém o nome de usuário, a senha e as informações do locatário e chama a API para buscar o token.
- Em seguida, com o token obtido, chame a API actial passando-o nos cabeçalhos da solicitação.
Este é um cenário muito simples, mas as coisas ficam bem complexas quando você tem que executar uma cadeia de 10 API “S cada uma dependente uma da outra.
É aqui que criamos essa abordagem de árvore de dependência
Primeiro, precisamos formar um modelo como este
Agora, depois disso, formamos uma árvore de dependência como esta
Qualquer coisa definida como $ {} significava que é dependente de outra saída de variáveis.
ResourceOps significa API “s a serem executadas
É assim que a árvore de dependências é criada
- Avaliamos parâmetros que são independentes e anexe-os à raiz.
- Chegamos então às operações de recursos e entendemos que isso depende dos valores anexados ao nó raiz. Então, nós os separamos deles da raiz e os anexamos ao novo nó.
- O mesmo será feito para todas as operações de recursos e saída.
Assim que criarmos a árvore de dependências, vamos para o nó folha, execute-o e depois vá para o pai com o resultado da execução do nó folha e, em seguida, seu pai e seu pai até chegarmos ao nó superior.
Assim que chegarmos ao nó superior, obtemos o resultado e o retornamos como uma resposta de sucesso http.
Se houver algum erro na execução, retornamos a resposta de erro de uma forma legível. p>
Acho que não expliquei parte e parte disso, mas só quero destacar como resolvemos um problema do mundo real com a estrutura de dados em árvore para ações dinâmicas a serem executadas sem um desenvolvedor escrevendo algum código.