Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Tamanho: px
Começar a partir da página:

Download "Árvores. Estruturas de Dados. Prof. Vilson Heck Junior"

Transcrição

1 Árvores Estruturas de Dados Prof. Vilson Heck Junior

2 Árvores INTRODUÇÃO

3 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 lineares, ou seja, os elementos não são dispostos em forma sequencial;

4 Introdução Árvores são amplamente utilizadas e possuem diversas estratégias de implementação; Cada estratégia tem um conjunto específico de algoritmos para armazenamento e recuperação dos dados; Árvores genealógicas são análogas às estruturas de dados árvores.

5 Árvores COMPOSIÇÃO

6 Composição As árvores são compostas por: Nodos/Nós: são os elementos inseridos em uma árvore; Arestas: fazem a ligação entre 2 nodos;

7 Composição O primeiro Nodo de uma árvore é chamado de Raiz; Todos os demais nodos da árvore serão seus descendentes; Nodos que não tenham filhos serão chamados de folhas, ou terminais; Os demais nodos são ditos intermediários, ou às vezes: galhos.

8 Composição As principais propriedades de cada nodo são: Ordem/Grau: Indica o número de filhos que o nodo possui; Nível/Altura/Profundidade: Indica a distância do nodo em relação à raiz; A árvore também possuí valores de ordem e de nível. Ambos os valores serão assumidos com base no maior valor encontrado em qualquer nodo.

9 Árvore: Nível 3 e Ordem 4 Nós / Nodos Arestas A Nível 0 Nó A = Raiz Ordem 2 D G B E Ordem H I F J C Nível Nível 1 Nó B = Galho Ordem 3 Nó C = Folha Ordem 0 Nível 2 Nó D = Folha Ordem 0 Nó E = Galho Ordem 4 Nó F = Folha Ordem 0 Nível 3 Nó G = Folha Ordem 0 Nó H = Folha Ordem 0 Nó I = Folha Ordem 0 Nó J = Folha Ordem 0

10 Árvores OUTRAS PROPRIEDADES

11 Propriedades Qualquer nodo de uma árvore pode ser chamado de raiz para uma sub-árvore; Um Nodo Pai é um nodo conectado diretamente acima de outro nodo; Um Nodo Filho é um nodo conectado diretamente abaixo de outro nodo; Nodos Irmãos compartilham o mesmo nodo pai;

12 Propriedades Nodos Ancestrais são todos os nodos que estão acima de um nodo, com ligação direta ou indireta; Nodos Descendentes são todos os nodos que estão abaixo de um nodo, com ligação direta ou indireta;

13 Árvores EXERCÍCIOS

14 A B C D E F G H I K M N O P R S T U X Y Z W & #

15 Árvores ÁRVORES BINÁRIAS

16 Árvores Binárias Árvores Binárias são árvores com todas as propriedades vistas anteriormente, porém com algumas regras: A Ordem máxima da árvore é 2; Todos os nodos de uma sub-árvore, do filho à direita, serão maiores do que o nodo pai; Todos os nodos de uma sub-árvore, do filho à esquerda, serão menores do que o nodo pai; Geralmente chamadas de Árvores binárias de pesquisa ;

17 Árvores Binárias O número máximo de nodos para cada nível de uma árvore binária é determinada pela equação: total 2 nível

18 Árvore Binária: Nível 4 e Ordem 2 Nós / Nodos Arestas A Nível 0 Nó A = Raiz Ordem 2 B C Nível 1 Nó B = Galho Ordem 2 Nó C = Galho Ordem 2 D H E Ordem I F Nível G Nível 2 Nó D = Folha Ordem 0 Nó E = Galho Ordem 2 Nó F = Folha Ordem 0 Nó G = Folha Ordem 0 Nível 3 Nó H = Galho Ordem 1 Nó I = Folha Ordem 0 J Nível 4 Nó J = Folha Ordem 0

19 Árvores EXEMPLO: ÁRVORE BINÁRIA EM MDA

20 Árvores IMPLEMENTADO ÁRVORES BINÁRIAS

21 Implementando Árvores são implementadas com elementos dinâmicos, assim como nas listas encadeadas; Nas listas, tínhamos apenas um próximo elemento. Nas árvores, cada elemento terá dois próximos : Filho da Esquerda; e Filho da Direita.

22 Implementando public class Nodo { public int numero; //outros atributos //... public Nodo esquerda; public Nodo direita; public Nodo pai; //Opcional }

23 Implementando Para implementar operações em árvores, é necessário percorrer diversos nodos dela; Para inserir um novo elemento, é necessário descer a árvore nível por nível até encontrar a posição adequada ao novo elemento; Para remover um elemento, é necessário descer a árvore até encontrar o elemento a ser removido;

24 Implementando Vale lembrar das regras mais importantes de navegação nas árvores binárias de pesquisa: Elementos menores estarão à esquerda; Elementos maiores estarão à direita.

25 Implementando Inserção: Se a raiz estiver vazia: Insere na raiz. Senão: Navega pela árvore (subindo de nível) comparando o valor a ser inserido com os valores dos nodos visitados; Se Menor Esquerda; e Se Maior Direita; Quando encontrar um nodo sem filho para o lado por onde deveria seguir, insere o novo elemento nesta posição.

26 public static void inserir(nodo novo) { novo.direita = null; novo.esquerda = null; novo.pai = null; if (raiz == null) { raiz = novo; } else { Nodo aux = raiz; while (aux!= null) { if (novo.numero < aux.numero) { if (aux.esquerda == null) { aux.esquerda = novo; break; } aux = aux.esquerda; } } } else { if (aux.direita == null) { aux.direita = novo; break; } aux = aux.direita; } } novo.pai = aux;

27 Implementando Pesquisa: Se a raiz estiver vazia: Não encontrado! Senão: Navega pela árvore (subindo de nível) comparando o valor pesquisado com os valores dos nodos visitados: Igual Encontrado! Menor Desloca à Esquerda; Maior Desloca à Direita; Se percorrer toda a árvore sem encontrar: Não encontrado!

28 Implementando public Nodo pesquisar(int nro) { Nodo aux = raiz; while (aux!= null) { if (aux.numero == nro) { return aux; } else if (nro < aux.numero) { aux = aux.esquerda; } else { aux = aux.direita; } } return null; }

29 Implementando Navegar por todos os Nodos:

30 Implementando Listar Conteúdo da Árvore: A listagem da árvore pode ser feitas de três formas básicas: Em ordem: 1, 2, 3, 4, 6, 8 Pré-ordem: 6, 2, 1, 4, 3, 8 Pós-ordem: 1, 3, 4, 2, 8,

31 Implementando Listar Conteúdo da Árvore: Pode ser implementado com diversas estratégias: Recursividade; Pilha; Busca do subsequente

32 Listar com Recursividade public static void listar(nodo inicio) { if (inicio == null) { return; } listar(inicio.esquerda); System.out.println(inicio.numero); listar(inicio.direita); }

33 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

34 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

35 Implementando Remoção de Nodos Raiz sem filhos: Raiz = null;

36 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

37 Implementando Remoção de Nodos Raiz com um filho: Raiz = Filho Único da Raiz;

38 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

39 Implementando Remoção de Nodos Raiz com dois filhos: Substituto = Subsequente(Raiz); //Aux Substitui (Raiz pelo Substituto);

40 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

41 Implementando Remoção de Nodos Não Raiz sem filhos: PaiAux = Aux.Pai; Se (PaiAux.Esquerda == Aux) então PaiAux.Esquerda = null; Senão PaiAux.Direita = null;

42 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

43 Implementando Remoção de Nodos Não Raiz / 1 filho: PaiAux = Aux.Pai; FilhoAux = Aux.Filho; (esquerda, ou direita) Se (PaiAux.Esquerda == Aux) então PaiAux.Esquerda = FilhoAux; Senão PaiAux.Direita = FilhoAux;

44 Remoção de Nodos: Aux = Pesquisar(Nodo) Se Aux == NULL não encontrado! Senão: Se Aux for raiz: Sem filhos Com um filho Com dois filhos Senão Sem filhos Com um filho Com dois filhos Implementando

45 Implementando Remoção de Nodos Não Raiz / 2 filhos: Substituto = Subsequente(Aux); Substitui (Aux pelo Substituto);

46 Implementando private static boolean substituirnodo(nodo original, Nodo novo) { if (original == null novo == null) { } return false; Nodo pai = original.pai; if (pai!= null) { } if (pai.esquerda == original) { pai.esquerda = novo; } else { } pai.direita = novo; novo.pai = pai; Nodo filho = original.esquerda; if (filho!= null) { } filho.pai = novo; novo.esquerda = filho; } filho = original.direita; if (filho!= null) { } filho.pai = novo; novo.direita = filho; return true; Continuação...

47 Implementando (1/3) public static boolean remover(nodo rem) { if (rem == null) { return false; } //Informação paterna Nodo pai = rem.pai; //Existe um substituto único ou nenhum? Nodo subst; if (rem.esquerda == null rem.direita == null) { //Ambos são null? sem substituto if (rem.esquerda == rem.direita) { subst = null; } else { //Se direita vazia, substituto esta na esquerda e vice versa if (rem.direita == null) { subst = rem.esquerda; } else { subst = rem.direita; } }

48 Implementando (2/3) //Se tiver um pai, atualiza vinculo dos filhos, senão atualiza a raiz. } if (pai!= null) { if (pai.esquerda == rem) { pai.esquerda = subst; } else { pai.direita = subst; } } else { raiz = subst; } //Se tiver um filho substituto, atualiza seu vinculo paterno if (subst!= null) { subst.pai = pai; } return true;

49 Implementando (3/3) //Se chegarmos aqui é por que o nodo excluído tem dois filhos. (Subsequente) //Procuramos o elemento imediatamente maior e que não tenha filho a esquerda Nodo proximo = rem.direita; while (proximo.esquerda!= null) { } proximo = proximo.esquerda; //Removemos o nodo que tem apenas um filho remover(proximo); //Recursividade //Inserimos o nodo "próximo removido" no lugar do "removido" substituirnodo(rem, proximo); } //Se estivermos excluindo a raiz, atualiza ela if (pai == null) { raiz = proximo; } return true;

50 Trabalho Implemente um Árvore Binária de Pesquisa para realizar a inserção, pesquisa, remoção e listagem de um cadastro de alunos. Os alunos serão cadastrados por: Nome (chave, String) Matricula (long) Nome do curso (String) Como nome é o campo chave, a separação esquerda/direita dos elementos deverá ser feita com base nos nomes dos alunos. Exemplo de função para comparar strings de forma alfabética :

51 Árvores ÁRVORES BALANCEADAS Imagem: Natalie Jeremijenko

52 Árvores O pior cenário para uma árvore binária de pesquisa é quando uma sequência de números é inserida já em ordem: Crescente; ou Decrescente.

53 Árvore não Balanceada Entrada: 2, 5, 8, 10,

54 Árvores Para melhorar o tempo de busca em árvores binárias de pesquisa, é possível aplicar técnicas de balanceamento, conforme ilustração a seguir:

55 Balanceando a Árvore

56 Balanceando a Árvore

57 Balanceando a Árvore

58 Árvores AVL O conceito de Árvore AVL foi criado em 1962 por Adelson-Velsky e Landis; É uma árvore binária de pesquisa balanceada; O primeiro diferencial: cada nodo possuí um campo numérico indicando a diferença de altura para cada subárvore filha: 0 : subárvores com mesma altura; 1 : subárvore direita é 1 nível maior; -1 : subárvore esquerda é 1 nível maior;

59 Árvore Binária NÃO AVL: Nível 3 e Ordem 2 Nós / Nodos Arestas A Nível 0 Nó A = Raiz Ordem 2 B Ordem D E C Nível Nível 1 Nó B = Galho Ordem 2 Nó C = Galho Ordem 2 Nível 2 Nó D = Galho Ordem 2 Nó E = Galho Ordem 1 H I Nível 3 Nó H = Folha Ordem 0 Nó I = Folha Ordem 0 Nível 4

60 Diferenças A Nível 0 Nó A: Dif = -2 B C Nível 1 Nó B: Dif = -1 Nó C: Dif = 0 D E Nível 2 Nó D: Dif = 0 Nó E: Dif = 0 H I Nível 3 Nó H: Dif = 0 Nó I: Dif = 0

61 Principal Regra: Árvores AVL Nenhum nodo pode permanecer com diferença maior de nível em qualquer subárvore maior do que 1: 2 2 Sempre que esta condição não for satisfeita, devem ocorrer rotações na árvore, até que ela esteja balanceada, ou seja, com qualquer subárvore

62 Alguma diferença > 1? A Nível 0 Nó A: Dif = -2 B C Nível 1 Nó B: Dif = -1 Nó C: Dif = 0 D E Nível 2 Nó D: Dif = 0 Nó E: Dif = 0 H I Nível 3 Nó H: Dif = 0 Nó I: Dif = 0

63 Árvores AVL Rotações: Diferença Diferença do filho Tipo de Rotação 1 Simples: à esquerda 2 0 Simples: à esquerda -1 Dupla: filho para a direita e pai para a esquerda 1 Dupla: filho para a esquerda e pai para a direita -2 0 Simples: à direita -1 Simples: à direita

64 Diferença do Filho Maior A Nível 0 Nó A: Dif = -2 B C Nível 1 Nó B: Dif = -1 Nó C: Dif = 0 D E Nível 2 Nó D: Dif = 0 Nó E: Dif = 0 H I Nível 3 Nó H: Dif = 0 Nó I: Dif = 0

65 Árvores AVL Rotações: Diferença Diferença do filho Tipo de Rotação 1 Simples: à esquerda 2 0 Simples: à esquerda -1 Dupla: filho para a direita e pai para a esquerda 1 Dupla: filho para a esquerda e pai para a direita -2 0 Simples: à direita -1 Simples: à direita

66 Rotação à Direita A B C D E H I

67 Rotação à Direita A B C D E H I

68 Rotação à Direita B A D C H I E

69 Rotação à Direita B D A H I E C

70 Rotação à Direita B D A H I E C

71 Rotação à Direita B D A H I E C

72 Árvore Binária AVL: Nível 2 e Ordem 2 B Nível 0 Nó B: Dif = 0 D Ordem H I E A C Nível Nível 1 Nó D: Dif = 0 Nó A: Dif = 0 Nível 2 Nó H: Dif = 0 Nó I: Dif = 0 Nó E: Dif = 0 Nó C: Dif = 0 Nível 3

73 Árvores AVL ROTAÇÕES

74 Rotação Simples à Esquerda private boolean RotacaoEsquerda(Nodo centro) { if (centro == null) return false; Nodo aux = centro.direita; if (aux == null) return false; //Atualizar a raiz? if (centro == raiz) raiz = aux; //Troca os pais aux.pai = centro.pai; centro.pai = aux; if (aux.pai!= null) { Nodo pai = aux.pai; if (pai.esquerda == centro) pai.esquerda = aux; else pai.direita = aux; } //Troca os filhos Nodo troca = aux.esquerda; aux.esquerda = centro; centro.direita = troca; return true; }

75 Rotação Simples à Direita private boolean RotacaoDireita(Nodo centro) { if (centro == null) return false; Nodo aux = centro.esquerda; if (aux == null) return false; //Atualizar a raiz? if (centro == raiz) raiz = aux; //Troca os pais aux.pai = centro.pai; centro.pai = aux; if (aux.pai!= null) { Nodo pai = aux.pai; if (pai.esquerda == centro) pai.esquerda = aux; else pai.direita = aux; } //Troca os filhos Nodo troca = aux.direita; aux.direita = centro; centro.esquerda = troca; return true; }

76 Rotação Dupla à Esquerda private boolean RotacaoDuplaEsquerda(Nodo centro) { if (centro == null) return false; Nodo aux = centro.direita; if (aux == null) return false; boolean retorno = RotacaoDireita(aux); if (retorno == false) return false; return RotacaoEsquerda(centro); }

77 Rotação Dupla à Direita private boolean RotacaoDuplaDireita(Nodo centro) { if (centro == null) return false; Nodo aux = centro.esquerda; if (aux == null) return false; boolean retorno = RotacaoEsquerda(aux); if (retorno == false) return false; return RotacaoDireita(centro); }

78 Árvores AVL OUTRAS ALTERAÇÕES

79 Alterações Classe Nodo Novos atributos: public int AltEsq; public int AltDir; public int Dif; Construtor: this.dif = 0; this.altdir = 0; this.altesq = 0;

80 AlturaSubArvore Calculo Dif public int AlturaSubArvore(Nodo atual) { if (raiz == null) return 0; if (atual == null) atual = raiz; if (atual.esquerda == null) atual.altesq = 0; else atual.altesq = AlturaSubArvore(atual.Esquerda) + 1; if (atual.direita == null) atual.altdir = 0; else atual.altdir = AlturaSubArvore(atual.Direita) + 1; atual.dif = atual.altdir - atual.altesq; if (atual.altdir > atual.altesq) return atual.altdir; else return atual.altesq; }

81 Balanceamento da Árvore (1/2) public void BalancearArvore(Nodo atual) { if (raiz == null) return; if (atual == null) atual = raiz; if (atual.dif > 1) { if (atual.direita.dif == -1) RotacaoDuplaEsquerda(atual); else RotacaoEsquerda(atual); return; }

82 Balanceamento da Árvore (2/2) if (atual.dif < -1) { if (atual.esquerda.dif == 1) RotacaoDuplaDireita(atual); else RotacaoDireita(atual); return; } if (atual.esquerda!= null) BalancearArvore(atual.Esquerda); if (atual.direita!= null) BalancearArvore(atual.Direita); }

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

ALGORITMOS 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

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Introdução a árvores AVL. Prof. Ernesto Lindstaedt Introdução a árvores AVL Prof. Ernesto Lindstaedt Definição O nome AVL vem dos seus criadores Adelson Velsky e Landis (1962); Uma ABP T é denominada AVL se: Para todos nós de T,, as alturas de suas duas

Leia mais

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 17 Estrutura de Dados: Árvores AVL Prof. Tiago A. E. Ferreira Introdução O nome AVL vem de seus criadores Adelson Velskye Landis, cuja primeira referência encontra-se

Leia mais

Árvores AVL e Árvores B. Jeane Melo

Á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 binárias de busca

Á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

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela

Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela 488 Árvore AVL A seguir estudaremos árvore AVL e árvore 234. Os slides que versão sobre as árvores retro aludidas foram baseados nos slides gerados pela professora Elisa Maria Pivetta Cantarelli intitulados

Leia mais

Árvores & Árvores Binárias

Á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 mais

Árvores. Prof. César Melo ICOMP/UFAM

Árvores. Prof. César Melo ICOMP/UFAM Árvores Prof. César Melo ICOMP/UFAM Introdução v Árvore é uma estrutura adequada para representar hierarquias Diretórios em um computador Serviço de resolução de nomes na Internet v A forma mais natural

Leia mais

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Á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 mais

Árvores Binárias de Busca (ABB) 18/11

Á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

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM

Algoritmos e Estruturas de Dados II Árvores - AVL. Prof. César Melo DCC/ICE/UFAM Algoritmos e Estruturas de Dados II Árvores - AVL Prof. César Melo DCC/ICE/UFAM Até mais ABB, muito prazer AVL. Escreva sobre a estrutura de dados Árvore Binária de Busca(ABB). Você terá 10 minutos para

Leia mais

PROGRAMAÇÃO III (LTSI)

PROGRAMAÇÃO III (LTSI) ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2009/2010 Árvores Binárias AVL Tal como visto anteriormente, caso

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Á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

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

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 mais

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES 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

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. Á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

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

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 Á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 E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Á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 mais

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma

Leia mais

GGI026 - Árvore rubro-negra - Remoção

GGI026 - Á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

DAINF - Departamento de Informática

DAINF - 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 AVL. Problema do balanceamento

ÁRVORE AVL. Problema do balanceamento ÁRVORE VL Prof. ndré ackes Problema do balanceamento 2 eficiência da busca em uma árvore binária depende do seu balanceamento. O(log N), se a árvore está balanceada O(N), se a árvore não está balanceada

Leia mais

Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Árvores Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Setembro de 2011 Tópicos Introdução Árvores binárias Implementação em Java Ordens de percurso em árvores binárias Altura de uma

Leia mais

{ = == NULL) = == NULL)

{ = == NULL) = == NULL) Com base no que foi discutido codifique uma função, na linguagem C, que implemente a remoção por cópia. void remocaoporcopia(arvorebinenc arvore) { ArvoreBinEnc prev, tmp = arvore; if (arvore->filhodir

Leia mais

Busca. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Busca. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Busca Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Outubro de 2011 Tópicos Introdução e Objetivo. Busca Sequencial. Busca Binária. Árvore Binária de Busca. Busca Tópicos Faculdade de

Leia mais

Introduçã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 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 mais

UNILASALLE 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* 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

ÁRVORE BINÁRIA DE BUSCA

Á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

Linguagem C: Árvores AVL

Linguagem C: Árvores AVL Instituto de C Linguagem C: Árvores AVL Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Árvores Balanceadas As árvores binárias de pesquisa são,

Leia mais

Árvore Binária de Busca. Prof. César Melo

Á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

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS ÁRVORES BALANCEADAS Cristina Boeres Árvore Binária - altura máxima Seja a árvore A formada com as seguintes inserções! 1, 2, 3, 4, 5, 6 e 7 1 2 3 4! Pior caso: O(n) 5 6

Leia mais

Árvores Vermelho-Preto

Árvores Vermelho-Preto Árvores Vermelho-Preto SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC)

Leia mais

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Exercícios: Árvores 1. Utilizando os conceitos de grafos, defina uma árvore.

Leia mais

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza

Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza Splaying Tree (Árvore espalhada) Estrutura de Dados II Jairo Francisco de Souza Introdução Inventada por Adelson Velskii e Landis - 1962. Também chamada de Árvores Auto-Ajustadas ou Árvore de Afunilamento.

Leia mais

Árvores AVL IAED, 2014/2015

Árvores AVL IAED, 2014/2015 Árvores AVL IAED, 24/25 Resumo da aula de hoje Recapitular algumas ideias da última aula Pesquisa, inserção, remoção & travessias em árvores binárias de pesquisa. Árvores binárias equilibradas Exemplo:

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁ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 mais

ÁRVORE BINÁRIA DE BUSCA TDA-ABB

Á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

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Árvores Rubro-Negra IFRN

Á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 mais

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão)

Estruturas de Dados. Árvores AVL: Partes I e II. Desempenho de ABBs (Revisão) Estruturas de Dados Árvores AVL: Partes I e II Prof. Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww3.datastructures.net (Goodrich

Leia mais

Árvore Vermelho-Preta. Estrutura de Dados II Jairo Francisco de Souza

Á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 mais

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução

8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução 8. ÁRVORES Até... 8.1 Introdução ÁRVORES Formas de Armazenamento: Árvores Estáticas: Type Tipo_Árvore = Array[1..Max] of Tipo_Dado; Por exemplo : árvore de grau 3. P 5 7 9 0 3 8 2 5 2 5 7 9 0 3-1 -1 8

Leia mais

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE Árvores Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque Engenharia da Computação Poli - UPE Motivação Para entradas realmente grandes, o acesso linear de listas é proibitivo Estrutura de dados

Leia mais

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. 1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. b. Achar o maior elemento (campo numérico) de uma árvore binária dada. c. Trocar

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca 0. Um breve comentário sobre os algoritmos de busca em tabelas De uma maneira geral, realizam-se operações de busca, inserção e remoção de elementos numa tabela. A busca sequencial tradicional é O(N).

Leia mais

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade

Leia mais

Exemplo Árvore Binária

Exemplo Árvore Binária Árvores Rohit Gheyi Para entradas realmente grandes, o acesso linear O(n) de listas é proibi9vo Estrutura de dados não linear, cujas operações tem custos em geral O(log n) 1 2 Exemplo Como seria pesquisar

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca / Árvores de busca / 1 Árvores binárias de busca, ou binary search trees, BST, são árvores binárias onde, para cada sub-árvore, todos os elementos da sub-árvore da esquerda são

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 Á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 Balanceadas

Árvores Binárias Balanceadas Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli elisa@fw.uri.br Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos

Leia mais

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP Árvores lgoritmos e Estruturas de Dados I Nesta aula veremos conceitos e definições sobre árvores Diferentemente das estruturas de pilhas, filas e listas que são lineares, uma árvore é uma estrutura de

Leia mais

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19 Arvores, Percursos não recursivos, Arvores heterogêneas Aula 19 Arvores binárias encadeadas Percorrer uma árvore é uma operação muito comum e seria útil encontrar um método mais eficiente para implementar

Leia mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois

Leia mais

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser

Leia mais

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Listas Encadeadas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados

Leia mais

Estrutura de Dados. Diego Silveira Costa Nascimento

Estrutura de Dados. Diego Silveira Costa Nascimento Estrutura de Dados Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 31 de agosto de 2017 Ementa do Curso 1 Introdução

Leia mais

Métodos de Pesquisa de Dados (II) Árvore N-ária de Pesquisa

Mé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 mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-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 mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

INF1010 Lista de Exercícios 2

INF1010 Lista de Exercícios 2 INF00 Lista de Exercícios 2 Árvores. Construir algoritmo para dada uma árvore n-ária, transformá-la em uma árvore binária. 2. Qual a maior e menor quantidade de nós que podem existir em uma árvore binária

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não adequadas para representar hierarquias. Exemplo:

Leia mais

Árvores. Árvores M-Vias. Métodos de Pesquisa de Dados. de Pesquisa (ANP) VANTAGENS EXEMPLO

Á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 mais

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro Universidade Federal de Alagoas - UFAL Departamento de Tecnologia da Informação - TCI Ciência da Computação Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros

Leia mais

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação Árvores N-árias, Binárias, Busca Vanessa Maia Berny Mestrado em Ciência da Computação Disciplina de Estrutura de Dados Prof. Dr. Luzzardi, Paulo Roberto Gomes Abril de 2008 Árvores N-árias São estruturas

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Algoritmos e Estruturas de Dados 2005/2006 Árvore de pesquisa binária árvores podem ser desiquilibradas operações de inserção e eliminação de elementos são de complexidade linear no pior caso, quando árvore

Leia mais

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO PROGRAMA DE PÓS- GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 01. Toda arvore binária possui as seguintes propriedades: I. Todos os nós de uma sub- árvore direita são maiores

Leia mais

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria

Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria SCE 182 SCC122 Algoritmos Estruturas e Estruturas de Dados de Dados I Árvores AVL (Balanceadas) Profª.Drª. Roseli Ap. Francelin Romero Fonte: Profa. Patrícia Marchetti Revisão: Gedson Faria Árvores AVL

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não podem ser usadas como hierarquias. Exemplo: árvore

Leia mais

Unidade: Estruturas de Dados Não Lineares. Unidade I:

Unidade: Estruturas de Dados Não Lineares. Unidade I: Unidade: Estruturas de Dados Não Lineares Unidade I: 0 Unidade: Estruturas de Dados Não Lineares 1 - Recursividade Um algoritmo que para resolver um problema divide-o em subproblemas mais simples, cujas

Leia mais

Pilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha.

Pilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha. 1 Estrutura de Dados II Pilha e Fila Pilha em C Definir o registro que representará cada elemento da pilha. No início a pilha estará vazia, logo o ponteiro topo tem o valor NULL. As operações de inserção

Leia mais

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas

Estruturas de Dados com Jogos. Capítulo 9 Árvores Balanceadas Estruturas de Dados com Jogos Capítulo 9 Árvores Balanceadas 1 Seus Objetivos neste Capítulo Entender o conceito de Balanceamento, e sua importância para a eficiência das Árvores Binárias de Busca; Desenvolver

Leia mais

Estruturas 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 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 mais

GGI026 - Árvore balanceada

GGI026 - Árvore balanceada GGI06 - Árvore balanceada Marcelo K. Albertini 11 de Setembro de 013 /1 Trabalho 1 implementar programa para resolver o problema entregue programa deve funcionar conforme pedido na descrição 3 fazer apresentação

Leia mais

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção.

Árvores AVL. O balanceamento da árvore pode ser realizado localmente se apenas uma porção da árvore for afetada por operações de inserção ou remoção. Árvores Árvores AVL Os algoritmos vistos trabalham sobre a árvore toda. Se houver a necessidade de manter o balanceamento a cada inserção ou remoção, então sua eficiência fica bastante prejudicada. O balanceamento

Leia mais

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto

ÁRVORE RUBRO- NEGRA. Prof. André Backes. Também conhecida como árvore vermelhopreto ÁRVORE RUBRO- NEGR Prof. ndré Backes Árvore rubro-negra 2 Também conhecida como árvore vermelhopreto ou red-black Tipo de árvore binária balanceada Originalmente criada por Rudolf Bayer em 1972 Chamadas

Leia mais

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária Túlio Toffolo www.decom.ufop.br/toffolo Pesquisa em Memória Primária n Introdução - Conceitos Básicos n Pesquisa Sequencial n Pesquisa Binária n Árvores

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes

Leia mais

Árvores Binárias. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Árvores Binárias. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Árvores Binárias Algoritmos e Estruturas de Dados 2 201-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Árvores 2 Raíz 3 Folhas 4 Nós Internos 5 Pais e Filhos 6 Descendentes Ancestrais 8 Irmãos 9 Níveis

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS TEORIA CONJUNTO ORDENADO DE ITENS NO QUAL NOVOS ITENS PODEM SER INSERIDOS E A PARTIR DO QUAL PODEM SER ELIMINADOS ITENS EM UMA

Leia mais

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Tabelas Hash. Prof. Túlio Toffolo  BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Tabelas Hash Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa

Leia mais

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza

Árvores AVL. Estrutura de Dados II Jairo Francisco de Souza Árvores AVL Estrutura de Dados II Jairo Francisco de Souza Introdução As árvores binárias de pesquisa são projetadas para um acesso rápido à informação. Idealmente a árvore deve ser razoavelmente equilibrada

Leia mais

Árvores binárias de pesquisa

Árvores binárias de pesquisa Árvores binárias de pesquisa Árvore binária de pesquisa Árvore binária, sem elementos repetidos, que verifica a seguinte propriedade: Para cada nó, todos os valores da sub-árvore esquerda são menores,

Leia mais

ADT - Árvores. ADT Árvores Definição

ADT - Árvores. ADT Árvores Definição ADT - Árvores Outro tipo abstrato de dados (ADT) é a árvore. Como acontece com as listas, a utilização das árvores será basicamente como estruturas de dados ao invés de tipos de dados. Ou seja, o foco

Leia mais

Árvores Auto-ajustadas

Á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

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler Aula 10 Alocação Dinâmica de Memória Listas Encadeadas prof Leticia Winkler 1 Prof. Leticia Winkler 2 Alocação de Memória Reservar na memória (principal), o espaço para guardar a informação através da

Leia mais

Lista com descritor (continuação)

Lista com descritor (continuação) Lista com descritor (continuação) Rotina para remover o eiro elemento de uma LLSECD: char removeiniciollsecd(tdescritor *l, TInfo val) { p = l->; l->=p->prox; if (l->==1) Rotina para remover o último nó

Leia mais

Linguagem Haskell. Maria Adriana Vidigal de Lima

Linguagem Haskell. Maria Adriana Vidigal de Lima em Haskell Linguagem Haskell Faculdade de Computação - UFU Dezembro - 2009 em Haskell 1 em Haskell Noções sobre Fundamentos em Haskell Noções sobre Uma árvore é uma estrutura de dados baseada em listas

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas Programação Funcional 16 a Aula Árvores equilibradas Pedro Vasconcelos DCC/FCUP 2014 Aula anterior Operações sobre árvores binárias ordenadas: 1 pesquisa; 2 inserção; 3 remoção. Estas operações são mais

Leia mais

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro Estruturas de Dados Filas de Prioridade Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww3.datastructures.net (Goodrich & Tamassia).

Leia mais

Árvores Equilibradas. Sumário

Árvores Equilibradas. Sumário Árvores Equilibradas Sumário Splay Vermelho Preto AA e BB Multidimensionais quaternárias k d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA Árvores Equilibradas Sumário Árvores AVL Árvores

Leia mais

Estruturas de Dados I

Estruturas de Dados I Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus

Leia mais

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II Ordenação: Heapsort Algoritmos e Estruturas de Dados II Introdução Possui o mesmo princípio de funcionamento da ordenação por seleção Selecione o menor item do vetor Troque-o pelo item da primeira posição

Leia mais

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome: ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome: RA: Turma: Questão 1 (ENADE Computação 2005) No famoso jogo da Torre de Hanói,

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática Programação 1I Prof. Osório Listas simplesmente encadeadas Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática Programação II Disciplina:

Leia mais

Algoritmos 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 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 mais