EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES
|
|
- Igor Godoi Caldeira
- 7 Há anos
- Visualizações:
Transcrição
1 EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES Estrutura de dados: - Arvore é um vetor em que cada componente (nodo) é composto por 3 campos: - Elemento (informação a tratar), que pode ser um tipo de dados - não estruturado básico (inteiro, real, caracter,...), ou - estruturado (vetor, matriz, registo,...); se o tipo de dados é um registo, então é composto por um ou mais subcampos (dependendo do volume de informação a tratar) em que um deles pode funcionar como Chave (base para ordenar e pesquisar na lista); - Esquerda (índice do nodo da raiz da subárvore esquerda), que é um número inteiro; - Direita (índice do nodo da raiz da subárvore direita), que é um número inteiro; - Raiz (índice do nodo que contém o elemento da raiz da árvore). - Representação de um nodo da árvore: Nodo Elemento Esquerda Direita Informação Subárvore Subárvore 1
2 Exemplo: Árvore com 10 nodos, em que o elemento de cada nodo é um inteiro. Representação gráfica: Estrutura de dados: Arvore(k) = struct { Elemento, Esquerda, Direita }, k = 1,..., 10 Arvore é um tipo de dados estruturado, mais especificamente um registo (estrutura); Elemento é um tipo de dados não estruturado básico (inteiro). Raiz = 1 2
3 Arvore Elemento Esquerda Direita Implementação em MatLab: Arvore(1).Elemento = 86; Arvore(1).Esquerda = 2; Arvore(1).Direita = 3; Arvore(2).Elemento = 28; Arvore(2).Esquerda = 4; Arvore(2).Direita = 6; Arvore(3).Elemento = 59; Arvore(3).Esquerda = 5; Arvore(3).Direita = 7; Arvore(4).Elemento = 81; Arvore(4).Esquerda = 0; Arvore(4).Direita = 0; Arvore(5).Elemento = 49; Arvore(5).Esquerda = 0; Arvore(5).Direita = 0; Arvore(6).Elemento = 47; Arvore(6).Esquerda = 8; Arvore(6).Direita = 10; Arvore(7).Elemento = 71; Arvore(7).Esquerda = 0; Arvore(7).Direita = 9; Arvore(8).Elemento = 76; Arvore(8).Esquerda = 0; Arvore(8).Direita = 0; Arvore(9).Elemento = 40; Arvore(9).Esquerda = 0; Arvore(9).Direita = 0; Arvore(10).Elemento = 11; Arvore(10).Esquerda = 0; Arvore(10).Direita = 0; 3
4 Operações básicas sobre uma árvore binária: - Criar um nodo de uma árvore binária - Criar uma árvore binária (com um elemento) - Verificar se uma árvore binária está vazia - Libertar/destruir um nodo de uma árvore binária - Determinar o número de elementos/nodos de uma árvore binária - Determinar a altura (número de níveis) de uma árvore binária - Listar os elementos de uma árvore binária (pré-ordem; em-ordem; pós-ordem) - Pesquisar um elemento numa árvore binária - Consultar um elemento numa árvore binária - Inserir um elemento numa árvore binária - Remover um elemento de uma árvore binária Outras operações sobre uma árvore binária: - Determinar o maior elemento de uma árvore binária - Verificar se duas árvores binárias são iguais - Alterar/atualizar os dados de um Elemento de uma árvore binária - Trocar dois elementos de uma árvore binária 4
5 Criar um nodo de uma árvore binária a partir de um elemento Representação gráfica: Nodo Elemento Estrutura de dados (representação): Parâmetros: Nodo Elemento Elemento Esquerda 0 Direita 0 Entrada: informação referente a um elemento (Elem) Saída: um nodo isolado composto pelo elemento dado e sem ligações a subárvores (Nodo) Função implementada em MatLab (iterativa): function [Nodo] = CriarNodoArvore (Elem) Nodo.Elemento = Elem; Nodo.Esquerda = 0; Nodo.Direita = 0; 5
6 Criar uma árvore binária (com um elemento) Representação gráfica: Arvore Elem Estrutura de dados (representação): Parâmetros: Arvore Elemento Elem Esquerda 0 Direita 0 Entrada: informação referente a um elemento (Elem) Saída: árvore com um só nodo (Arvore) e raiz da árvore (Raiz) Função implementada em MatLab (iterativa): function [Arvore, Raiz] = CriarArvoreBinaria (Elem) nodo = CriarNodoArvore(Elem); Arvore(1) = nodo; Raiz = 1; 6
7 Verificar se uma árvore binária está vazia Notas: - uma árvore está vazia se o nodo associado à raiz é nulo Parâmetros: Entrada: raiz da árvore (Raiz) Saída: 1, se a árvore está vazia, ou 0, se a árvore não está vazia (vazia) Função implementada em MatLab (iterativa): function [vazia] = ArvoreBinariaVazia (Raiz) if Raiz == 0 vazia = 1; else vazia = 0; 7
8 Libertar um nodo de uma árvore binária Notas: - depois de um elemento ser eliminado da árvore, é necessário remover o seu nodo do vetor (isto é, libertar o nodo da árvore); - o elemento depois de eliminado da árvore já não entra no cálculo do número de nodos da árvore, apesar do seu nodo ainda fazer parte do vetor, ou seja - número de nodos da árvore = tamanho vetor - 1; - o nodo a libertar tem nos seus campos Esquerda e Direita o valor -1; - a libertação do nodo consiste em redefinir o vetor da árvore, de tal forma que todos os nodos da árvore fiquem nas primeiras posições do vetor, ficando no último índice um nodo com um elemento que deixa de fazer parte da árvore (tamanho árvore < tamanho vetor); - este processo consiste em 3 passos: 1º) "encostar" todos os nodos da árvore à esquerda no vetor (primeiras posições), 2º) atualizar os índices dos sucessores dos nodos da árvore (os que forem necessários), 3º) atualizar a raiz da árvore (se for necessário). 8
9 Parâmetros: Entrada: árvore (Arvore), raiz da árvore (Raiz) e nodo a libertar (indnodo) Saída: árvore (Arvore) e raiz da árvore (Raiz) atualizadas Algoritmo (iterativo): Determinar o número de nodos da árvore (tam) Se a árvore está vazia (tam = 0) Então Sair (o nodo a libertar está no fim do vetor da árvore índice 1) Senão Determinar o índice do nodo a libertar (indnodo) Se o nodo a libertar está na última posição do vetor ou não existe (indnodo > tam) Então Eliminar o nodo do vetor da posição indnodo e atualizar a sua dimensão Sair (o nodo a libertar está no fim do vetor da árvore) Senão Eliminar o nodo do vetor da posição indnodo e atualizar a sua dimensão Atualizar o campo Esquerda dos nodos com valores maiores do que indnodo Atualizar o campo Direita dos nodos com valores maiores do que indnodo Atualizar a raiz da árvore (se for um valor superior a indnodo) 9
10 Função implementada em MatLab (iterativa): function [Arvore, Raiz] = LibertarNodoArvore (Arvore, Raiz, indnodo) tam = NumeroNodosArvore(Arvore, Raiz); if tam == 0 % verificar se o índice do nodo a libertar é o último índice do vetor if indnodo > tam % não existe nodo a libertar ou está no fim do vetor Arvore(indNodo) = []; % a árvore tem um elemento a menos, mas o vetor da árvore mantém o nodo; % assim, este nodo deve ser libertado do vetor (isto é, eliminado) % primeiro: eliminar o nodo da posição indnodo e atualizar a sua dimensão Arvore(indNodo) = []; 10
11 % segundo: atualizar os campos Esquerda e Direita dos nodos com valores superiores a indnodo for i = 1:tam if Arvore(i).Esquerda > indnodo Arvore(i). Esquerda = Arvore(i). Esquerda - 1; if Arvore(i).Direita > indnodo Arvore(i). Direita = Arvore(i). Direita - 1; % terceiro: atualizar a raiz da árvore, Raiz, se for um índice superior a indnodo if Raiz >= indnodo Raiz = Raiz - 1; 11
12 Determinar o número de nodos de uma árvore binária Parâmetros: Entrada: árvore (Arvore) e raiz da árvore (Raiz) Saída: número de nodos da árvore (numnodos) Algoritmo (recursivo): Se a árvore está vazia Então { Caso terminal/paragem - árvore vazia } Número nodos da árvore 0 Senão { Caso geral - árvore não vazia } Número nodos da árvore Número nodos da subárvore esquerda + Número nodos da subárvore direita + 1 (raiz) 12
13 Função implementada em MatLab (recursiva): function [numnodos] = NumeroNodosArvore (Arvore, Raiz) if Raiz == 0 % Caso terminal/paragem - árvore vazia numnodos = 0; % Caso geral - árvore não vazia % número de nodos da subárvore esquerda numnodosesq = NumeroNodosArvore(Arvore, Arvore(Raiz).Esquerda); % número de nodos da subárvore direita numnodosdir = NumeroNodosArvore(Arvore, Arvore(Raiz).Direita); % número de nodos da árvore numnodos = numnodosesq + numnodosdir + 1; 13
14 Determinar a altura de uma árvore binária Parâmetros: Entrada: árvore (Arvore) e raiz da árvore (Raiz) Saída: altura da árvore (altura) Algoritmo (recursivo): Se a árvore está vazia Então { Caso terminal/paragem - árvore vazia } Altura da árvore 0 Senão { Caso geral - árvore não vazia } Altura da árvore maior { altura da subárvore esquerda, altura da subárvore direita } + 1 (raiz) 14
15 Função implementada em MatLab (recursiva): function [altura] = AlturaArvore (Arvore, Raiz) if Raiz == 0 % Caso terminal/paragem - árvore vazia altura = 0; % Caso geral - árvore não vazia % altura da subárvore esquerda alturaesq = AlturaArvore(Arvore, Arvore(Raiz).Esquerda); % altura da subárvore direita alturadir = AlturaArvore(Arvore, Arvore(Raiz).Direita); % altura da árvore = maior { altura da subárvore esquerda, altura da subárvore direita } + 1 (raiz) if alturaesq > alturadir altura = alturaesq + 1; else altura = alturadir + 1; 15
16 Listar os elementos de uma árvore binária Travessia em pré-ordem: raiz, subárvore esquerda e subárvore direita. Travessia em em-ordem: subárvore esquerda, raiz e subárvore direita. Travessia em pós-ordem: subárvore esquerda, subárvore direita e raiz. Pré-ordem: Em-ordem: Pós-ordem:
17 Parâmetros: Entrada: árvore (Arvore) e raiz da árvore (Raiz) Saída: mostra os elementos da árvore, segundo um tipo de travessia Funções (3) implementadas em MatLab (recursivas): Nota: MostrarElemento é uma operação específica do problema % pré-ordem: raiz, subárvore esquerda e subárvore direita function [] = ListarPreOrdem (Arvore, Raiz) if Raiz == 0 % Caso paragem/terminal - árvore vazia else % Caso geral - árvore não vazia MostrarElemento(Arvore(Raiz).Elemento); ListarPreOrdem(Arvore, Arvore(Raiz).Esquerda); ListarPreOrdem(Arvore, Arvore(Raiz).Direita); 17
18 % em-ordem: subárvore esquerda, raiz e subárvore direita function [] = ListarEmOrdem (Arvore, Raiz) if Raiz == 0 % Caso paragem/terminal - árvore vazia else % Caso geral - árvore não vazia ListarEmOrdem(Arvore, Arvore(Raiz).Esquerda); MostrarElemento(Arvore(Raiz).Elemento); ListarEmOrdem(Arvore, Arvore(Raiz).Direita); % pós-ordem: subárvore esquerda, subárvore direita e raiz function [] = ListarPosOrdem (Arvore, Raiz) if Raiz == 0 % Caso paragem/terminal - árvore vazia else % Caso geral - árvore não vazia ListarPosOrdem(Arvore, Arvore(Raiz).Esquerda); ListarPosOrdem(Arvore, Arvore(Raiz).Direita); MostrarElemento(Arvore(Raiz).Elemento); 18
19 Pesquisar um elemento numa árvore binária Notas: - A informação contida no elemento a pesquisar basta incidir sobre o valor da sua Chave. - Estratégia (processo recursivo): - analisar dois casos terminais/paragem: a) se a árvore está vazia, então o elemento não existe; b) se o elemento da raiz é igual ao elemento a pesquisar, então existe na raiz; - analisar o caso geral: a) pesquisar o elemento na subárvore esquerda (direita); b) se não está na subárvore esquerda (direita), então pesquisar na subárvore direita (esquerda). Parâmetros: Entrada: elemento a pesquisar (Elem), árvore (Arvore) e raiz da árvore (Raiz) Saída: índice do elemento, se existe na árvore, ou 0, se não existe na árvore (indnodo) 19
20 Algoritmo (recursivo): { Caso de paragem/terminal - árvore vazia } Se a árvore está vazia então Atribuir a indnodo o valor 0 { Caso de paragem/terminal - elemento = elemento da raiz } Se o elemento que está na raiz é igual ao elemento a pesquisar então Atribuir a indnodo o valor da raiz { Caso geral - pesquisar na subárvore esquerda e depois na direita (se necessário) } Pesquisar o elemento na subárvore esquerda da raiz Se o elemento não está na subárvore esquerda então Pesquisar o elemento na subárvore direita da raiz 20
21 Função implementada em MatLab (recursiva): Nota: CompararElementos é uma operação específica do problema function [indnodo] = PesquisarElementoArvore (Elem, Arvore, Raiz) if Raiz == 0 % Caso terminal/paragem - Elem não existe na árvore indnodo = 0; if CompararElementos(Arvore(Raiz).Elemento, Elem) == 0 % Caso terminal/paragem - Elem existe na árvore na posição Raiz do vetor indnodo = Raiz; % Caso geral - pesquisar o elemento nas subárvores esquerda e direita (se não existir na esquerda) indnodo = PesquisarElementoArvore(Elem, Arvore, Arvore(Raiz).Esquerda); % se não está na subárvore esquerda, então pesquisar na subárvore direita if indnodo == 0 indnodo = PesquisarElementoArvore(Elem, Arvore, Arvore(Raiz).Direita); 21
22 Consultar um elemento de uma árvore binária Notas: - A informação contida no elemento a consultar basta incidir sobre o valor da sua Chave. - Estratégia: pesquisar o elemento na árvore e mostar toda a informação sobre ele (se existe) ou uma mensagem a indicar que não existe. Parâmetros: Entrada: elemento a pesquisar (Elem), árvore (Arvore) e raiz da árvore (Raiz) Saída: mostra os dados do elemento com a mesma Chave de Elem (se está na árvore) Função implementada em MatLab (iterativa): Nota: MostrarElemento é uma operação específica do problema function [] = ConsultarElementoArvore (Elem, Arvore, Raiz) % indnodo é índice do nodo com Elem (se não existe, indnodo = 0) indnodo = PesquisarElementoArvore(Elem, Arvore, Raiz); if indnodo == 0 disp('elemento nao pertence a lista!'); % Elem não pertence à lista else MostrarElemento(Arvore(indNodo).Elemento); % Elem pertence à lista 22
23 Inserir um elemento numa árvore binária Notas: - O elemento a inserir é sempre inserido como folha da árvore; - Processo deve começar pela pesquisa da posição de inserção do elemento na árvore; - Há necessidade da pesquisa obedecer a algum critério, para que exista uniformidade na distribuição dos nodos pela árvore (a árvore não deve ficar totalmente desequilibrada). - Alguns critérios possíveis são: 1º) inserir como folha na subárvore de menor tamanho, 2º) tendo o mesmo tamanho, inserir na subárvore com menos nodos. Parâmetros: Entrada: elemento a inserir (Elem), árvore (Arvore) e raiz da árvore (Raiz) Saída: árvore (Arvore) e raiz da árvore (Raiz) atualizadas 23
24 Algoritmo (iterativo): Criar um novo nodo com o elemento a inserir Se a árvore está vazia Então Inserir o novo nodo na primeira posição do vetor (início da lista) Senão Determinar a posição do novo elemento no vetor (último índice) Pesquisar (processo recursivo) a posição de inserção do novo elemento na árvore (o pai do novo nodo) Acrescentar o novo nodo ao vetor da árvore Ligar o novo nodo à árvore como filho do nodo associado à posição de inserção 24
25 Função implementada em MatLab (iterativa): function [Arvore, Raiz] = InserirElementoArvore (Elem, Arvore, Raiz) Nodo = CriarNodoArvore(Elem); if Raiz == 0 % árvore está vazia Arvore(1) = Nodo; Raiz = 1; indnodo = NumeroNodosArvore(Arvore, Raiz) + 1; painodo = DeterminarPaiNodo(Arvore, Raiz, 0); % 0 é o índice do nodo pai da raiz Arvore(indNodo) = Nodo; if Arvore(paiNodo).Esquerda == 0 Arvore(paiNodo).Esquerda = indnodo; else Arvore(paiNodo).Direita = indnodo; 25
26 function [painodo] = DeterminarPaiNodo (Arvore, Raiz, pairaiz) if Raiz == 0 painodo = pairaiz; altesq = AlturaArvore(Arvore, Arvore(Raiz).Esquerda); altdir = AlturaArvore(Arvore, Arvore(Raiz).Direita); if altesq < altdir painodo = DeterminarPaiNodo(Arvore, Arvore(Raiz).Esquerda, Raiz); elseif altesq > altdir painodo = DeterminarPaiNodo(Arvore, Arvore(Raiz).Direita, Raiz); else % alturas iguais, verificar qual tem mais nodos numnodosesq = NumeroNodosArvore(Arvore, Arvore(Raiz).Esquerda); numnodosdir = NumeroNodosArvore(Arvore, Arvore(Raiz).Direita); if numnododesq < numnodosdir else painodo = DeterminarPaiNodo(Arvore, Arvore(Raiz).Esquerda, Raiz); painodo = DeterminarPaiNodo(Arvore, Arvore(Raiz).Direita, Raiz); 26
27 Remover um elemento de uma árvore binária Considerar três casos distintos, segundo as características do nodo a remover: - se é uma folha, - se é um nodo com um único filho, ou - se é um nodo com dois filhos. Remoção de uma folha Remoção de um nodo com um único filho 27
28 Remoção de um nodo com dois filhos Este processo consiste em substituir este nodo por uma das folhas sua descendente: 1º) escolher uma das folhas descendente do nodo a remover que o irá substituir; 2º) substituir o elemento do nodo a ser removido pelo elemento da folha escolhida; 3º) remover a folha escolhida. Parâmetros: Entrada: elemento a remover (Elem), árvore (Arvore) e raiz da árvore (Raiz) Saída: árvore (Arvore) e raiz da árvore (Raiz) atualizadas 28
29 Algoritmo (iterativo): Determinar o índice do nodo com o elemento a remover Se o elemento não está na árvore Então SAIR Se o nodo com o elemento a remover tem 2 filhos (subárvores não nulas) Então Escolher a folha descendente do nodo com o elemento a remover que o irá substituir Substituir o elemento do nodo a ser removido pelo elemento da folha substituta Remover a folha substituta da árvore Libertar a folha substituta da árvore (do vetor da árvore) Se o nodo com o elemento a remover é uma folha (subárvores nulas) Então Remover o nodo com o elemento a remover da árvore Libertar o nodo removido do vetor da árvore Se o nodo a remover tem apenas filho esquerdo (não tem filho direito) Então Determinar o nodo pai do nodo com o elemento a remover Ligar o nodo pai ao nodo filho do nodo com o elemento a remover Se o nodo a remover tem apenas filho direito (não tem filho esquerdo) Então Determinar o nodo pai do nodo com o elemento a remover Ligar o nodo pai ao nodo filho do nodo com o elemento a remover 29
30 Função implementada em MatLab (iterativa): function [Arvore, Raiz] = RemoverElementoArvore (Elem, Arvore, Raiz) indnodo = PesquisarElementoArvore(Elem, Arvore, Raiz); if indnodo == 0 % Elem não está na árvore % se o nodo a remover tem 2 filhos if Arvore(indNodo).Esquerda ~= 0 & Arvore(indNodo).Direita ~= 0 folha = ProcurarFolhaArvore(Arvore, indnodo); paifolha = PesquisarPaiNodo(Arvore(folha).Elemento, Arvore, Raiz, 0); Arvore(indNodo).Elemento = Arvore(folha).Elemento; if Arvore(paiFolha).Esquerda == folha Arvore(paiFolha).Esquerda = 0; % remover a folha da árvore else Arvore(paiFolha).Direita = 0; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, folha); % libertar a folha do vetor 30
31 % se o nodo a remover é uma folha if Arvore(indNodo).Esquerda == 0 & Arvore(indNodo).Direita == 0 painodo = PesquisarPaiNodo(Elem, Arvore, Raiz, 0); if painodo == 0 Raiz = 0; % árvore com apenas um elemento if Arvore(paiNodo).Esquerda == indnodo Arvore(paiNodo).Esquerda = 0; else Arvore(paiNodo).Direita = 0; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, indnodo); 31
32 % se o nodo a remover tem apenas filho esquerdo (não tem filho direito) if Arvore(indNodo).Esquerda ~= 0 painodo = PesquisarPaiNodo(Elem, Arvore, Raiz, 0); if painodo == 0 Raiz = Arvore(Raiz).Esquerda; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, indnodo); if Arvore(paiNodo).Esquerda == indnodo Arvore(paiNodo).Esquerda = Arvore(indNodo).Esquerda; else Arvore(paiNodo).Direita = Arvore(indNodo).Esquerda; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, indnodo); 32
33 % o nodo a remover apenas tem filho direito (não tem filho esquerdo) painodo = PesquisarPaiNodo(Elem, Arvore, Raiz, 0); if painodo == 0 Raiz = Arvore(Raiz).Direita; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, indnodo); if Arvore(paiNodo).Esquerda == indnodo Arvore(paiNodo).Esquerda = Arvore(indNodo).Direita; else Arvore(paiNodo).Direita = Arvore(indNodo).Direita; [Arvore, Raiz] = LibertarNodoArvore(Arvore, Raiz, indnodo); 33
34 Operações auxiliares da operação remover elemento de uma árvore: Operação: Determinar o pai (nodo) do nodo a remover Parâmetros: Entrada: elemento (Elem), árvore (Arvore), raiz da árvore (Raiz) e pai da raiz (pairaiz) Saída: o nodo pai do elemento dado (painodo) Função implementada em MatLab (iterativa): Nota: CompararElementos é uma operação específica do problema function [painodo] = PesquisarPaiNodo (Elem, Arvore, Raiz, pairaiz) if Raiz == 0 painodo = 0; if CompararElementos(Arvore(Raiz).Elemento, Elem) == 0 painodo = pairaiz; painodo = PesquisarPaiNodo(Elem, Arvore, Arvore(Raiz).Esquerda, Raiz); if painodo == 0 painodo = PesquisarPaiNodo(Elem, Arvore, Arvore(Raiz).Direita, Raiz); 34
35 Operação: Procurar a folha que irá substituir o nodo com o elemento a remover. Parâmetros: Entrada: árvore (Arvore), raiz da árvore (Raiz) e pai da raiz (pairaiz) Saída: a folha (nodo terminal) com o elemento que substituirá o elemento a remover (folha) Função implementada em MatLab (iterativa): function [folha] = ProcurarFolhaArvore (Arvore, Raiz, pairaiz) if Arvore(Raiz).Esquerda == 0 & Arvore(Raiz).Direita == 0 folha = Raiz; alturaesq = AlturaArvore(Arvore, Arvore(Raiz).Esquerda); alturadir = AlturaArvore(Arvore, Arvore(Raiz).Direita); if alturaesq > alturadir folha = ProcurarFolhaArvore(Arvore, Arvore(Raiz).Esquerda, Raiz); else folha = ProcurarFolhaArvore(Arvore, Arvore(Raiz).Direita, Raiz); 35
36 Determinar o maior elemento de uma árvore binária Notas: - a árvore não pode ser vazia, pois não existe maior elemento de uma árvore vazia. Parâmetros: Entrada: árvore (Arvore) e raiz da árvore (Raiz) Saída: maior elemento da árvore (maiorelem) Algoritmo (recursivo): Se a árvore tem apenas um elemento (a raiz é uma folha) Então Maior elemento elemento da raiz Se a árvore tem dois filhos Então Maior elemento maior { maior elemento da subárvore esquerda, maior elemento da subárvore direita, elemento da raiz } Se a árvore tem apenas filho esquerdo (não tem filho direito) Então Maior elemento maior { maior elemento da subárvore esquerda, elemento da raiz } Se a árvore tem apenas filho direito (não tem filho esquerdo) Então Maior elemento maior { maior elemento da subárvore direita, elemento da raiz } 36
37 Função implementada em MatLab (recursivo): function [maiorelem] = DeterminarMaiorElementoArvore (Arvore, Raiz) if Arvore(Raiz).Esquerda == 0 & Arvore(Raiz).Direita == 0 maiorelem = Arvore(Raiz).Elemento; if Arvore(Raiz).Esquerda ~= 0 & Arvore(Raiz).Direita ~= 0 maioresq = DeterminarMaiorElementoArvore(Arvore, Arvore(Raiz).Esquerda); maiordir = DeterminarMaiorElementoArvore(Arvore, Arvore(Raiz).Direita); % determinar o maior entre a raiz e os maiores das subárvores esquerda e direita maiorelem = MaiorEntreDoisElementos(Arvore(Raiz).Elemento, maioresq); maiorelem = MaiorEntreDoisElementos(maiorElem, maiordir); if Arvore(Raiz).Esquerda ~= 0 maioresq = DeterminarMaiorElementoArvore(Arvore, Arvore(Raiz).Esquerda); % determinar o maior entre a raiz e o maior da subárvore esquerda maiorelem = MaiorEntreDoisElementos(Arvore(Raiz).Elemento, maioresq); 37
38 if Arvore(Raiz).Direita ~= 0 maiordir = DeterminarMaiorElementoArvore(Arvore, Arvore(Raiz).Direita); % determinar o maior entre a raiz e o maior da subárvore esquerda maiorelem = MaiorEntreDoisElementos(Arvore(Raiz).Elemento, maiordir); function [maior] = MaiorEntreDoisElementos (Elem1, Elem2) if CompararElementos(Elem1, Elem2) >= 0 maior = Elem1; else maior = Elem2; 38
39 Verificar se duas árvores binárias são iguais Notas: - duas árvores são iguais se tiverem os mesmos elementos e nas mesmas posições. Parâmetros: Entrada: duas árvores (Arvore1 e Arvore2) e respetivas raízes (Raiz1 e Raiz2) Saída: 1 (se as árvores são iguais) ou 0 (se as árvores são diferentes) Algoritmo (recursivo): Se as duas árvores estão vazias Então As árvores são iguais Se uma das árvores está vazia e a outra não Então As árvores são diferentes Se as duas árvores são não vazias Então Se os elementos das raízes das árvores são diferentes OU as subárvores esquerdas são diferentes OU as subárvores direitas são diferentes Então As árvores são diferentes Senão As árvores são iguais 39
40 Função implementada em MatLab (recursiva): Nota: CompararElementos é uma operação específica do problema function [iguais] = ArvoresIguais (Arvore1, Raiz1, Arvore2, Raiz2) if Raiz1 == 0 & Raiz2 == 0 iguais = 1; % as duas árvores estão vazias, logo são iguais % se uma das árvores é vazia if Raiz1 == 0 Raiz2 == 0 iguais = 0; % uma das árvores está vazia e a outra não, logo são diferentes % as duas árvores são não vazias if CompararElementos(Raiz1.Elemento, Raiz2.Elemento) ~= 0 iguais = 0; % as raízes são diferentes, logo as árvores são diferentes 40
41 % comparar as subárvores esquerdas if ArvoresIguais(Arvore1, Arvore1(Raiz1).Esquerda, Arvore2, Arvore2(Raiz2).Esquerda) ~= 0 iguais = 0; % as subárvores esquerdas são diferentes % comparar as subárvores direitas if ArvoresIguais(Arvore1, Arvore1(Raiz1).Direita, Arvore2, Arvore2(Raiz2).Direita) ~= 0 iguais = 0; % as subárvores direitas são diferentes iguais = 1; % as árvores são iguais 41
42 Alterar/atualizar um elemento de uma árvore binária Nota: - A informação contida no elemento fornecido para atualizar basta incidir sobre um dos seus campos, normalmente o que serve de Chave (valor que caracteriza o elemento). Parâmetros: Entrada: elemento a alterar (Elem), árvore (Arvore) e raiz da árvore (Raiz) Saída: árvore atualizada com a nova informação sobre o Elem (Arvore) Função implementada em MatLab (iterativa): Nota: AlterarElemento é uma operação específica do problema function [Arvore] = AlterarElementoArvore (Elem, Arvore, Raiz) indnodo = PesquisarElementoArvore(Elem, Arvore, Raiz); if indnodo ~= 0 Arvore(indNodo).Elemento = AlterarElemento(Arvore(indNodo).Elemento); 42
43 Trocar dois elementos de uma árvore binária Nota: - A informação contida nos elementos de entrada para trocar basta incidir sobre um dos seus campos, normalmente o que serve de Chave (valor que caracteriza o elemento). Parâmetros: Entrada: elementos a trocar (Elem1 e Elem2), árvore (Arvore) e raiz da árvore (Raiz) Saída: árvore atualizada com os elementos trocados (Arvore) Função implementada em MatLab (iterativa): function [Arvore] = TrocarElementosArvore (Elem1, Elem2, Arvore, Raiz) indnodo1 = PesquisarElementoArvore(Elem1, Arvore, Raiz); indnodo2 = PesquisarElementoArvore(Elem2, Arvore, Raiz); if indnodo1 ~= 0 & indnodo2 ~= 0 auxelem = Arvore(indNodo1).Elemento; Arvore(indNodo1).Elemento = Arvore(indNodo2).Elemento; Arvore(indNodo2).Elemento = auxelem; 43
44 Exemplo 1: Lista em que o elemento de cada nodo é um inteiro. Estrutura de dados: Arvore(k) = struct { Elemento, Esquerda, Direita }, k = 1,... Arvore é um tipo de dados estruturado (neste caso, do tipo registo); Elemento é um tipo não estruturado básico (neste caso, do tipo inteiro). Operações específicas deste problema a implementar (funções em MatLab): function [Elem] = CriarElemento () Elem = input('inserir um inteiro: '); function [] = MostrarElemento(Elem) disp(elem); function [Elem] = AlterarElemento (Elem) disp(elem); sim = input('pretende alterar este valor (1 = sim; 0 = nao)? '); if sim == 1 Elem = input('inserir um inteiro: '); 44
45 % comparar dois elementos considerando para comparação os valores dos elementos function [comp] = CompararElementos (Elem1, Elem2) if Elem1 > Elem2 comp = 1; elseif Elem1 == Elem2 comp = 0; else comp = -1; 45
EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES
EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES Árvores Binárias de Pesquisa (ABP) - Definição Árvore binária em que os elementos dos seus nodos têm associado uma chave, que - determina a
Leia maisEAD PILHA - DEFINIÇÃO
EAD PILHA - DEFINIÇÃO Os seus elementos são processados pela ordem inversa à ordem de chegada: - o último elemento a entrar na Pilha é o primeiro a sair (LIFO Last In First Out ). Qualquer operação que
Leia mais- o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ).
EAD FILA - DEFINIÇÃO Os seus elementos são processados por ordem de chegada: - o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ). Algumas operações realizam-se na cabeça
Leia maisEAD Árvore - representação usando listas ligadas
5.1. Definição - A pesquisa de um elemento numa árvore binária de pesquisa implica - fazer uma travessia da árvore até se encontrar o elemento procurado, ou - se concluir da sua inexistência. - As travessias
Leia maisLista com saltos - generalidades
Lista com saltos - generalidades - Foram propostas em 1989 por William Pugh, professor da Universidade de Maryland; - Permitem operações de consulta, inserção e remoção mais eficientes do que as listas
Leia maisAlgoritmos de pesquisa
Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o
Leia maisÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
Leia maisESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres
ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós
Leia maisAlgoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Leia maisÁrvores. Estruturas de Dados. Prof. Vilson Heck Junior
Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são
Leia maisÁrvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação
1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual
Leia maisÁrvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura
Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática
Leia maisLISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA
LISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA int *Lista; Lista 9 14 18... 976 982 Tamanho Máximo: - Variável Acesso: - Sequencial Tamanho atual: - Percorrer a lista até ao fim e contar os
Leia maisDAINF - Departamento de Informática
DAINF - Departamento de Informática Algoritmos 2 - Árvore binária de busca Prof. Alex Kutzke ( http://alex.kutzke.com.br/courses ) 30 de Novembro de 2015 Slides adaptados do material produzido pelo Prof.
Leia maisÁRVORE BINÁRIA DE BUSCA
ÁRVORE BINÁRIA DE BUSCA Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e remover elementos
Leia maisÁrvores Binárias. 16/11 Representação e Implementação: Encadeada Dinâmica O TAD
Árvores Binárias 16/11 Representação e Implementação: Encadeada Dinâmica O TAD ED AB, encadeada dinâmica Para qualquer árvore, cada nó é do tipo info esq dir typedef int elem; typedef struct arv *Arv;
Leia maisÁrvores Binárias de Busca (ABB) 18/11
Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:
Leia maisÁrvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.
Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação. Particularmente adequada quando existe necessidade de considerar todos ou alguma combinação
Leia maisÁrvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO
Métodos de Pesquisa de Dados Árvores M-Vias Encontrar um dado em um conjunto de dados de forma eficiente Baseia-se na noção de uma chave (índice) de pesquisa Aplicação típica: SGBD Busca de dados em disco
Leia maisBusca em vetores. Para encontrar um elemento em um vetor desordenado é caro Porém, inserir ou remover é barato.
Busca em vetores Para encontrar um elemento em um vetor desordenado é caro Porém, inserir ou remover é barato. Busca em vetores Quando especificamos uma propriedade que garanta alguma organização, isto
Leia maisCopiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)
Considere as seguintes declarações (NodoArv e PNodoArv), adaptadas dos apontamentos: struct NodoArv { int Elemento; struct NodoArv *Esquerda; struct NodoArv *Direita; ; typedef struct NodoArv *PNodoArv;
Leia maisÁrvores binárias de busca
Árvores binárias de busca S-202 lgoritmos e Estruturas de Dados I Prof. Thiago. S. Pardo Árvore binárias Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz D B E Terminologia: filho esquerdo
Leia maisÁrvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas
Leia maisESTRUTURA DE DADOS DCC013. Árvore Binária de Busca
ESTRUTURA DE DADOS DCC013 Árvore Binária de Busca Árvore Binária de Busca Propriedade fundamental da árvore binária de busca Valor da chave da raiz é Maior do que o valor da chave da subárvore da esquerda
Leia mais1/36 LISTAS. Programação II
1/36 LISTAS Estrutura de Dados 2/36 Estrutura de Dados Definição - Uma Estrutura de Dados é: - uma coleção de tipos de dados, composta por tipos não estruturados básicos, tipos estruturados ou uma mistura
Leia maisAlgoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza
Algoritmos e Estrutura de Dados II Árvore AVL Prof a Karina Oliveira kkco@dei.unicap.br Fonte: Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar o número de comparações efetuadas,
Leia maisSUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca
ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização
Leia maisUniversidade Federal de Mato Grosso Estrutura de Dados II
Universidade Federal de Mato Grosso Estrutura de Dados II Curso de Ciência da Computação Prof. Thiago P. da Silva thiagosilva@ufmt.br Agenda Definições Fator de Balanceamento Estrutura de um Nó Operações
Leia maisÁrvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.
Árvores, Árvores Binárias e Árvores Binárias de Pesquisa Rui Jorge Tramontin Jr. Tópicos Abordados Introdução Definição de Árvore Árvores Binárias Árvores Binárias de Pesquisa (ABP) UDESC / Rui J. Tramontin
Leia maisÁrvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM
Árvores Binária de Busca Prof. César Melo DCC/ICE/UFAM Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Época Normal Resolução 13/junho/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as
Leia maisPesquisa em Árvores Digitais. Adaptado de David M.
Pesquisa em Árvores Digitais Adaptado de David M. Pesquisa Digital Pesquisa digital é baseada na representação das chaves como uma seqüência de caracteres ou de dígitos. Os métodos de pesquisa digital
Leia maisAED2 - Aula 04 Vetores ordenados e árvores de busca
AED2 - Aula 04 Vetores ordenados e árvores de busca Considere um vetor ordenado v de tamanho n. Ele suporta as seguintes operações: busca - dada uma chave k, devolva um apontador para um objeto com esta
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 2) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.
Leia maisProf. Jesus José de Oliveira Neto
Prof. Jesus José de Oliveira Neto São estruturas de dados adequadas para a representação de hierarquias. Uma árvore é composta por um conjunto de nós. Existe um nó r, denominado raiz, que contém zero ou
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura
Leia maisAlgoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira Listas Seqüenciais Estática Seqüencial É implementada usando um vetor Deve-se determinar qual a
Leia maisGGI026 - Árvore rubro-negra - Remoção
GGI026 - Árvore rubro-negra - Remoção Marcelo K. Albertini 11 de Setembro de 2013 2/28 Aula de hoje Nesta aula veremos Remoção em Árvores rubro-negras 3/28 Remoção em árvores rubro-negras Metodologia Possibilidade
Leia maisÁrvore Binária de Busca. Prof. César Melo
Árvore Binária de Busca Prof. César Melo Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e
Leia maisÁrvores Binárias de Busca (ABB) 18/11
Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:
Leia maisAlgoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza
Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material da Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar
Leia maisCES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra
CES- Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Árvores CES- Operações sobre uma árvore Estruturas para armazenar árvores Contígua Contígua melhorada Encadeada
Leia maisEstruturas de Dados. Profº Carlos Alberto Teixeira Batista
Estruturas de Dados Profº Carlos Alberto Teixeira Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Árvores São estruturas de dados adequadas para a representação de hierarquias. Uma
Leia maisÁrvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich
Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic
Leia maisHeaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades
Leia maisIntrodução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)
Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 Lista Obrigatória 02 - Prof. Rafael Oliveira (Deve ser entregue em PDF via Moodle: Escolha apenas 5 exercícios para entrega) Exercício 01
Leia maisEstruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti
Estruturas de Dados 2018.2 Árvore AVL Uma Árvore AVL (Adelson, Velskii e Landis) T é uma Árvore Binária de Busca Balanceada, tal que: T é vazia; T consiste de um nó raiz k e duas subárvores binárias Te
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Exame Época Norma (15 val) Resolução 22/06/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int
Leia maisÁrvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda
Árvores Binárias de Pesquisa (ABP) INF03 Estruturas de Dados Árvores Binárias de Pesquisa apresentam uma relação de ordem entre os nodos ordem é definida por um campo denominado chave esq chave inf dir
Leia maisB-tree. B-Trees. Estrutura do nodo da B-tree. Balanceamento. Disposição dos elementos ordenados na B-tree. Exemplo de uma B-tree de ordem 3
B-tree B-Trees Material da Prof. Denise Bandeira, aula de Christian Hofsetz B-Trees são árvores balanceadas. Diferente das árvores binárias, os nós de uma B-tree podem ter um número variável de nodos filho.
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 3) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.
Leia maisEstruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisAlgoritmos de pesquisa
Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o
Leia maisINF 1010 Estruturas de Dados Avançadas. Árvores binárias
INF 1010 Estruturas de Dados Avançadas Árvores binárias 1 Árvore estrutura hierárquica: A B E F C D G A B C E F D G A B C D E F G (A (B (E, F)), C, (D (G))) 05/09/16 2 Árvore - definições árvore: nó raiz
Leia maisESTRUTURAS DE DADOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019
ESTRUTURS DE DDOS (LEI, LM, LEE) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2018/2019 Árvores Binárias o contrário das estruturas focadas até ao momento, as árvores
Leia maisÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior
ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda
Leia maisÁrvores Binárias Balanceadas Estrutura de Dados I
- entro de iências Exatas, Naturais e de Saúde Departamento de omputação Árvores inárias alanceadas Estrutura de Dados I OM06992 - Estrutura de Dados I Prof. Marcelo Otone guiar marcelo.aguiar@ufes.br
Leia maisUniversidade Federal de Mato Grosso
Universidade Federal de Mato Grosso Estrutura de Dados II Curso de Ciência da Computação Prof. Thiago P. da Silva thiagosilva@ufmt.br Material basedado em [Kurose&Ross 2009] e [Gonçalves, 2007] Agenda
Leia maisConceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias
Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias Conceitos gerais Representação por Contiguidade Física Representação por Encadeamento Operações 2 Conceitos gerais Uma árvore
Leia maisListas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisPesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Pesquisa em Memória Primária Árvores de Busca David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto
Leia maisÁrvores Binárias. 9/11 e 11/11 Conceitos Representação e Implementação
Árvores Binárias 9/11 e 11/11 Conceitos Representação e Implementação Árvore Binárias (AB) Uma Árvore Binária (AB) T é um conjunto finito de elementos, denominados nós ou vértices, tal que: (i) Se T =,
Leia maisÁrvores binárias de busca
Árvores binárias de busca Introdução à Ciência de Computação II Diego R. Amancio Baseado no material do Prof. Thiago A. S. Pardo Árvore binárias n Árvores de grau 2, isto é, cada nó tem dois filhos, no
Leia maisÁrvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral
SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Listas e árvores Listas lineares Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral Diversas aplicações necessitam de estruturas
Leia maisÁrvores Auto-ajustadas
Árvores Árvores Auto-ajustadas As árvores binárias de pesquisa são projetadas para um acesso rápido à informação. A velocidade das operações de inserção, remoção e busca realizadas sobre as árvores é mais
Leia maisÁRVORE BINÁRIA DE BUSCA TDA-ABB
ÁRVORE BINÁRIA DE BUSCA TDA-ABB Conceitos Gerais sobre Árvores Uma árvore é uma estrutura hierárquica dividida em níveis, que ou está vazia, ou contém elementos chamados nós; Diferentemente da árvore natural,
Leia maisÁrvores & Árvores Binárias
Árvores & Árvores Binárias Problema Implementações do TAD Lista Linear Lista encadeada eficiente para inserção e remoção dinâmica de elementos, mas ineficiente para busca Lista seqüencial (ordenada) Eficiente
Leia maisESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES
ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES Listas de Prioridades! Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade! A prioridade associada a um dado pode
Leia maisÁrvores binárias de busca
Árvores binárias de busca SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Árvore binárias Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz D B A E C F Terminologia: filho esquerdo filho
Leia maisÁrvores de Pesquisa (Parte I)
Baseado no material do Prof. Reinaldo Fortes para o curso de 2014-01 Arquivo original: 21._arvores_(parte_1) Árvores de Pesquisa (Parte I) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Algoritmos
Leia maisÁRVORES E ÁRVORES BINÁRIAS. Adaptado de Alexandre P
ÁRVORES E ÁRVORES BINÁRIAS Adaptado de Alexandre P ROTEIRO Contextualização Árvores Árvores Binárias ROTEIRO Contextualização Árvores Árvores Binárias CONTEXTUALIZAÇÃO Importância de estruturas unidimensionais
Leia maisÁrvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza
Árvore Vermelho-Preta Estrutura de Dados II Jairo Francisco de Souza Introdução As árvores Vermelho-preto são árvores binárias de busca Também conhecidas como Rubro-negras ou Red-Black Trees Foram inventadas
Leia maisEdital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 032/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
Leia maisMétodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa
UFSC-CTC-INE INE5384 - Estruturas de Dados Métodos de Pesquisa de Dados (II) Prof. Ronaldo S. Mello 2002/2 Árvore N-ária de Pesquisa Uma Árvore N-ária de Pesquisa (ANP) é uma árvore que: contém m subárvores
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 4) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.
Leia maisIntrodução a AVL: teoria e prática. 22/11, 25/11 e 30/11
Introdução a AVL: teoria e prática 22/11, 25/11 e 30/11 Árvores binárias de busca (ABB) Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz B A C Terminologia: filho esquerdo filho direito
Leia maisAlgoritmos e Estruturas de Dados II IEC013
Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão Listas Encadeadas Listas encadeadas ou listas ligadas representam
Leia maisÁrvores AVL e Árvores B. Jeane Melo
Árvores AVL e Árvores B Jeane Melo Roteiro Árvores Binárias Árvores AVL Definição Motivação Balanceamento Operações de rebalanceamento Árvores B Introdução Árvores Binárias Árvores binárias Cada nó tem
Leia maisÁrvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore
Árvores Rubro-Negras Árvores Rubro-Negras (Vermelho-Preta) Árvore Binária de Pesquisa (ABP) com nodos coloridos de vermelho e preto Árvore balanceada Qualquer caminho da raiz até as folhas, nenhum caminho
Leia maisALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão
UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 5.1 - Árvores, Árvores Binárias e Árvores Binárias de Busca
Leia maisÁRVORES BALANCEADAS (AVL)
ÁRORES BALANCEADAS (AL) PALO JOSÉ DA SILA E SILA 1. Árvores balanceadas Como já vimos anteriormente, o uso de árvores binárias de busca sem a preocupação com seu balanceamento pode levar a um aumento de
Leia maisÁrvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m
Árvore B Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m 1valores; Os valores dentro de cada nó estão ordenados; Todos os valores na subárvore esquerda de um valor são menores que
Leia maisLista de Exercícios sobre Listas Implementadas por Encadeamento
Lista de Exercícios sobre Listas Implementadas por Encadeamento 1) Se você tem de escolher entre uma representação por lista encadeada ou uma representação usando posições contíguas de memória para um
Leia maisÁrvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo
PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a
Leia maisEstruturas de Dados II
Estruturas de Dados II Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2086 Aula 2: Árvores http://www.do.ufgd.edu.br/rodrigosacchi Árvores Definição: Árvores Uma árvore T é um conjunto
Leia maisÁrvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisÁrvores Rubro-Negra IFRN
Árvores Rubro-Negra IFRN Árvores Rubro-Negra Seja T uma árvore binária de pesquisa Cada nó deve estar associado a uma cor rubro ou negra Uma árvore é rubro-negra quando as seguintes condições são satisfeitas:
Leia maisUNILASALLE Curso de Bacharelado em Ciência da Computação. Estrutura de Dados II Prof. Magalí T. Longhi. Árvores AVL*
UNILASALLE Curso de Bacharelado em Ciência da Computação Estrutura de Dados II Prof. Magalí T. Longhi Árvores AVL* * Material preparado para a disciplina de Estrutura de Dados II do Curso de Bacharelado
Leia maisÁrvores. Árvores Binárias. Conceitos gerais Terminologia Forma de Representação de Árvores. Conceitos gerais Operações
Árvores Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias Conceitos gerais Operações 2 Conceitos gerais Uma árvore é uma estrutura de dados que se caracteriza por uma relação
Leia maisÁrvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisMatrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Matrizes Esparsas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto
Leia maisEstruturas de dados e algoritmos fundamentais
Ministério da Ciência, Tecnologia e Ensino Superior U.C. 21046 Estruturas de dados e algoritmos fundamentais 21 de Junho de 2013 INSTRUÇÕES PARA A RESOLUÇÃO DO EXAME, ACONSELHA-SE QUE LEIA ATENTAMENTE
Leia maisTABELAS DE DISPERSÃO/HASH
1/47 TABELAS DE DISPERSÃO/HASH Introdução 2/47 Introdução Motivação - Considerar o problema de pesquisar um determinado valor num vetor: - Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade
Leia maisESTRUTURA DE DADOS LISTAS LINEARES
ESTRUTURA DE DADOS LISTAS LINEARES Prof. Dr. Daniel Caetano 2014-2 Objetivos Compreender as listas sequenciais Implementar uma Lista Sequencial com Vetor Compreender o uso de listas sequenciais Material
Leia maisÁrvores Binárias de Busca
Árvores AVL Árvores Binárias de Busca Altura de uma árvore binária (AB): igual à profundidade, ou nível máximo, de suas folhas A eficiência da busca em árvore depende do seu balanceamento Algoritmos de
Leia mais