Árvores Binárias de Pesquisa. Programação II Prof. Mateus Raeder. Árvores Binárias de Pesquisa. Árvores Binárias de Pesquisa. Classe Nodo Binário

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Árvores Binárias de Pesquisa. Programação II Prof. Mateus Raeder. Árvores Binárias de Pesquisa. Árvores Binárias de Pesquisa. Classe Nodo Binário"

Transcrição

1 Programação II Conhecida também como: Árvore binária ordenada Árvore binária de busca Aresenta relação de ordem entre os nodos Ordem definida através do camo chamado chave CHAVE Prof. Mateus Raeder Chaves dulicadas não são ermitidas Cada nó ossui uma chave única na árvore! Universidade do Vale do Rio dos Sinos - São Leooldo - Não há chaves dulicadas!!! FILHO DA ESQUERDA FILHO DA DIREITA Crie árvores inserindo os seguintes nós (em ordem): a), 22, 10,,, 15, 0, 22 b) j, x, o, m, z, a, j, h, i Valor da chave MENOR que a chave do ai Raiz Valor da chave MAIOR que a chave do ai a) b) j 22 a x h o z 0 15 i m Classe Nodo Binário ublic class BSTNode { rotected int key; rotected BSTNode left, right; ublic BSTNode() { left = right = null; ublic BSTNode(int num) { this(num,null,null); ublic BSTNode(int num, BSTNode lt, BSTNode rt) { this.key = num; left = lt; right = rt; ublic int getkey() { return key; ublic void setkey(int key) { this.key = key; Classe Nodo Binário ublic BSTNode getleft() { return left; ublic void setleft(bstnode left) { this.left = left; ublic BSTNode getright() { return right; ublic void setright(bstnode right) { this.right = right; 1

2 Classe Árvore Binária de Pesquisa ublic class BST { rivate BSTNode root = null; ublic BST() { ublic void clear() { root = null; ublic boolean isemty() { return root == null; ublic BSTNode getrootnode (){ return root; Busca de valor A rocura de um valor em uma árvore binária é mais ráida do que em listas ou vetores. Como funciona: Para cada nó, comare a chave a ser localizada com o valor armazenado no nó correntemente aontado Se a chave for menor, vá ara a sub-árvore esquerda, e tente novamente Senão vá ara a sub-árvore direita, e tente novamente A busca ara quando: For encontrado o nó Ou quando não há mais meios de continuar, ois a chave não está na árvore ublic BSTNode search (int el) { Busca de valor rivate BSTNode search (BSTNode, int el) { while (!= null) { se valor rocurado == chave do nó, retorna referência ao nó if (el==.key) return ; se valor rocurado < chave do nó, rocurar na sub-árvore esquerda deste nó else if (el<.key) =.left; se valor rocurado > chave do nó, rocurar na sub-árvore direita deste nó else =.right; caso chave não foi achada, retorna null Exemlo de busca de valor ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right;

3 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right;

4 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Exemlo de busca de valor Exemlo de busca de valor ublic BSTNode search (int el) { ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Exemlo de busca de valor ublic BSTNode search (int el) { rivate BSTNode search (BSTNode, int el) { while (!= null) { if (el==.key) return ; else if (el<.key) =.left; else =.right; 10 1 Inserindo uma nova chave ublic boolean insert (int el) { BSTNode = root, rev = null; caso o valor já exista na árvore, não inserir e retornar false rocurando um lugar ara colocar o novo nó while (!= null) { rev = ; if (el<.key) =.left; else =.right; se árvore vazia else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el);

5 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); el = 23 5

6 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 6

7 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); rev el = 23 Exemlo de inserção Exemlo de inserção ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); el = 23 rev 23 ublic boolean insert (int el) { BSTNode = root, rev = null; while (!= null) { rev = ; if (el<.key) =.left; else =.right; else if (rev.key<el) rev.right = new BSTNode(el); else rev.left = new BSTNode(el); el = 23 rev 23 É o rocesso de visitar cada nó da árvore exatamente uma vez. Visitar: Fazer algo com o nó como exibi-lo, gravá-lo, etc. O ercurso ode ser interretado como colocar todos os nós em uma linha ou a linearização da árvore. Os ercursos odem ser em extensão ou em rofundidade. Percursos em extensão: visitam todos os nós de cada nível, nível or nível (indo do mais alto ao mais baixo, ou vice-versa). Percursos em rofundidade: ercorre os caminhos das árvores. Percorre rimeiramente todo o caminho mais a esquerda, e assim or diante. - ercorre a sub-árvore direita. ré-fixada ós-fixada 7

8 ré-fixada ré-fixada ré-fixada ré-fixada ré-fixada ré-fixada 3 3

9 ré-fixada ré-fixada ré-fixada ré-fixada ré-fixada ré-fixada 6 - Percorre 3 esquerda 7 9

10 ré-fixada ré-fixada 6 6 ré-fixada ré-fixada ré-fixada ré-fixada ré-ordem: 10

11 ós-fixada ós-fixada ós-fixada ós-fixada 3 3 ós-fixada ós-fixada

12 ós-fixada ós-fixada ós-fixada ós-fixada ós-fixada ós-fixada 6 - Percorre 3 direita 7 - Percorre 3 direita 7

13 ós-fixada ós-fixada 6 6 ós-fixada ós-fixada ós-fixada ós-fixada 13

14 ós-fixada ós-fixada ós-ordem: - ercorre a sub-árvore direita. - ercorre a sub-árvore direita. 3 - ercorre a sub-árvore direita. - ercorre a sub-árvore direita

15 - ercorre a sub-árvore direita. - ercorre a sub-árvore direita ercorre a sub-árvore direita. - ercorre a sub-árvore direita ercorre a sub-árvore direita. - ercorre a sub-árvore direita

16 - ercorre a sub-árvore direita. - ercorre a sub-árvore direita ercorre a sub-árvore direita. - ercorre a sub-árvore direita Visita 3 o nó 7 - Visita 3 o nó 7 - ercorre a sub-árvore direita. - ercorre a sub-árvore direita

17 - ercorre a sub-árvore direita. - ercorre a sub-árvore direita ercorre a sub-árvore direita. - ercorre a sub-árvore direita ercorre a sub-árvore direita. - ercorre a sub-árvore direita in-ordem:

18 Percorra cada uma das árvores abaixo em PÓS-, PRÉ- e IN-ORDEM: a) b) c) Resostas: a) PÓS-ORDEM: PRÉ-ORDEM: IN-ORDEM: b) PÓS-ORDEM: PRÉ-ORDEM: IN-ORDEM: c) PÓS-ORDEM: PRÉ-ORDEM: IN-ORDEM: PRÉ-ORDEM - ercorre esquerda; - ercorre direita; PÓS-ORDEM IN-ORDEM PRÉ-ORDEM PÓS-ORDEM IN-ORDEM - ercorre esquerda; - ercorre esquerda; - ercorre esquerda; - ercorre esquerda; - ercorre direita; - ercorre esquerda; - ercorre direita; - visita Programação o nó; II Prof. Mateus - ercorre Raeder direita. - ercorre direita; - visita Programação o nó; II Prof. Mateus - ercorre Raeder direita. IN-ORDEM PRÉ-ORDEM ublic void inorder() { inorder(root); ublic void reorder() { reorder(root); IN-ORDEM - ercorre esquerda; - ercorre direita. rivate void inorder (BSTNode ) { if (!= null) { inorder(.left); System.out.rint(.key " "); inorder(.right); PRÉ-ORDEM - ercorre esquerda; - ercorre direita; rivate void reorder(bstnode ) { if (!= null) { System.out.rint(.key " "); reorder(.left); reorder(.right); PÓS-ORDEM ublic void ostorder() { ostorder(root); Remoção de um nó Ao remover um nó, 3 situações odem ocorrer : Situação 1: Exclusão de uma folha O nó é uma folha e não tem filhos o onteiro do seu ai é ajustado ara nulo. PÓS-ORDEM - ercorre esquerda; - ercorre direita; rivate void ostorder(bstnode ) { if (!= null) { ostorder(.left); ostorder(.right); System.out.rint(.key " "); Nodo a ser excluído

19 Remoção de um nó Ao remover um nó, 3 situações odem ocorrer : Situação 2: Nodo tem um filho Ponteiro do ai aonta ara o filho deste nodo Remoção de um nó Ao remover um nó, 3 situações odem ocorrer : Situação 3: Nodo tem dois filhos Dois tios de remoção Por cóia Por fusão Nodo a ser excluído Nodo a ser excluído Remoção or cóia Remoção or cóia Remove uma chave X (chave do nó que se quer remover): sobrescrevendo-a or uma outra chave Y Y é o maior valor na sub-árvore esquerda, ois este vai ser maior que todos os valores da sub-árvore esquerda e ao mesmo temo menor que os valores da sub-árvore direita e então removendo o nó que contem Y que será um dos casos simles: folha, ou nó com aenas um filho Coia Maior valor da sub-árvore esquerda Remoção or cóia Final Deleta nodo (situação 1 ou 2) 56 Encontra o ai de um nodo rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; 19

20 Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev;? Sim rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev

21 Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev;? Não rev Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev 21

22 Exemlo de encontro de ai Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev Exemlo de encontro de ai rotected BSTNode searchfather (int el) { BSTNode = root; BSTNode rev = null; acha o nó com a chave el while (!= null &&!(.key==el)) { rev = ; if (.key < el) =.right; else =.left; if (!=null &&.key==el) return rev; rev Remoção or cóia ublic void deletebycoying (int el) { BSTNode node, father = null; node = search (el) ; rocura nó a ser deletado if (node!= null && node.key==el) { if (node!=root) father = searchfather (el); rocura ai do nó a ser deletado if (node.right == null){ nó não tem filho direito (situação 2 ou situação 1); if (node==root) root= node.left; else if (father.left == node) father.left = node.left; else father.right = node.left; else if (node.left == null) { nó não tem filho esquerdo (caso 2) if (node==root) root= node.right; else if (father.left == node) father.left = node.right; else father.right = node.right; else { nó tem ambos os filhos: fazer remoção or cóia BSTNode tm = node.left; 1. egando sub-arvore esquerda while (tm.right!= null) 2. acha a osição mais a direita da sub-árvore esquerda do nó tm = tm.right; deletebycoying (tm.key); remove or coia o nó que ossui o maior valor da sub-arvore esquerda do nó a ser deletado node.key = tm.key; coia valor da chave do maior nó da sub-árvore esquerda else if (root!= null) System.out.rintln("el " el " is not in the tree"); else System.out.rintln("the tree is emty"); Exemlo de remoção or cóia ublic void deletebycoying (int el) { BSTNode node, father = null; node = search (el) ; if (node!= null && node.key==el) { if (node!=root) father = searchfather (el); if (node.right == null){ if (node==root) root= node.left; else if (father.left == node) father.left = node.left; else father.right = node.left; else if (node.left == null) { if (node==root) root= node.right; else if (father.left == node) father.left = node.right; else father.right = node.right; else { BSTNode tm = node.left; while (tm.right!= null) tm = tm.right; deletebycoying (tm.key); node.key = tm.key; else if (root!= null) System.out.rintln("el " el " is not in the tree"); else System.out.rintln("the tree is emty"); Remoção or fusão A solução consiste em fusionar as duas sub-árvores do nó a ser deletado em uma. Como na organização da árvore binária, todos os valores da sub-árvore a esquerda são menores que os valores da sub-árvore a direita Deve-se encontrar o maior valor na sub-árvore esquerda (o mais na direita) Este maior nó assa a ser ai da sub-árvore direita do nó a ser removido Remove a chave, removendo o nó que contém a chave E o ai do nó removido assa a aontar ara a nova subárvore 56 22

23 1 Remoção or fusão 2 3 Remoção or fusão Final Passa a ser ai Maior valor da sub-árvore esquerda Remoção or fusão ublic void deletebymerging (int el) { BSTNode tm, node,father = null; node = search (el) ; rocura nó a ser deletado if (node!= null && node.key==el) { if (node!=root) father = searchfather (el); rocura ai do nó a ser removido if (node.right == null){ nó não tem filho direito (situações 1 e 2); if (root==node) root=node.left; else if (father.left == node) father.left = node.left; else father.right = node.left; else if (node.left == null) { nó não tem filho esquerdo (situação 2) if (root==node) root=node.right; else if (father.left == node) father.left = node.right; else father.right = node.right; Exemlo de remoção or fusão ublic void deletebymerging (int el) { BSTNode tm, node,father = null; node = search (el) ; if (node!= null && node.key==el) { if (node!=root) father = searchfather (el); if (node.right == null){ if (root==node) root=node.left; else if (father.left == node) father.left = node.left; else father.right = node.left; else if (node.left == null) { if (root==node) root=node.right; else if (father.left == node) father.left = node.right; else father.right = node.right; else { se tem dois filhos, faz deleção or fusão else { tm = node.left; ega sub-arvore esquerda tm = node.left; while (tm.right!= null) tm = tm.right; ega filho mais a direita da sub-arvore esquerda while (tm.right!= null) tm = tm.right; 55 tm.right = node.right; filho a direita da sub-arvore esquerda assa a ter tm.right = node.right; como filho direito o filho direito do nó a ser deletado if (root==node) root = node.left; if (root==node) root = node.left; else if (father.left == node) father.left = node.left; else if (father.left == node) father.left = node.left; else father.right = node.left; else father.right = node.left; 52 else if (root!= null) System.out.rintln("el " el " is not in the tree"); else if (root!= null) System.out.rintln("el " el " is not in the tree"); else System.out.rintln("the tree is emty"); else System.out.rintln("the tree is emty"); 56 23

EAD Árvore - representação usando listas ligadas

EAD Árvore - representação usando listas ligadas 4.1. Definição É uma árvore binária em que os seus nodos têm associado uma chave, que - determina a sua posição de colocação na árvore e - obedece às seguintes regras: a chave de um nodo é - maior do que

Leia mais

EAD Árvore árvore binária

EAD Árvore árvore binária EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore

Leia mais

Pesquisa em Memória Primária. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros Pesquisa em Memória Primária Prof. Jonas Potros Procedimento para Inserir na Árvore Binária Critérios: Atingir um ponteiro nulo em um processo de pesquisa significa uma pesquisa sem sucesso. O ponteiro

Leia mais

Algoritmos e Estruturas de Dados: Árvore Binária

Algoritmos e Estruturas de Dados: Árvore Binária Algoritmos e Estruturas de Dados: Árvore Binária Exemplo de árvore binária e são os filhos de Altura desta árvore é 4 é a raiz da sub-árvore esquerda de Rômulo Silva de Oliveira Departamento de Automação

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore

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

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore

Leia mais

Métodos Computacionais. Árvores

Métodos Computacionais. Árvores Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos

Leia mais

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS

Leia mais

Algoritmos e Estruturas de Dados 2

Algoritmos e Estruturas de Dados 2 Algoritmos e Estruturas de Dados 2 Unidade 1: Árvores binárias Rafael Beserra Gomes Universidade Federal do Rio Grande do Norte Material compilado em 21 de fevereiro de 201. Licença desta apresentação:

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer

Leia mais

Estruturas de Dados I

Estruturas de Dados I UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.

Leia mais

Mo:vação. Árvore AVL. Caracterís:cas. Origem. Exemplo. Exercício 1 Qual é a altura dos nodos 50 e 44?

Mo:vação. Árvore AVL. Caracterís:cas. Origem. Exemplo. Exercício 1 Qual é a altura dos nodos 50 e 44? Mo:vação Árvore AVL Árvores binárias de Pesquisa possuem uma tendência natural de desbalancear 1 2 Rohit Gheyi rohit@dsc.ufcg.edu.br 6 8 1 2 Origem Adelson Velskii, G.; E. M. Landis (1962). "An algorithm

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Linguagem C: Árvores Binarias

Linguagem C: Árvores Binarias Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem

Leia mais

Estruturas de Dados Árvores

Estruturas de Dados Árvores Estruturas de Dados Árvores Prof. Eduardo Alchieri Árvores (introdução) Importância de estruturas unidimensionais ou lineares (vetores e listas) é inegável Porém, estas estruturas não são adequadas para

Leia mais

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa. Árvores Binárias Observação: Material elaborado a partir do material do Professor Marcos Costa. Árvores Binárias Árvore binária é definida como um conjunto finito de nós que Ou está vazio Ou consiste de

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

Estruturas de Dados Aula 15: Árvores 17/05/2011

Estruturas de Dados Aula 15: Árvores 17/05/2011 Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo

Leia mais

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira ÁRVORES ED2: MSc. Daniele Oliveira 2 Introdução Filas, pilhas» Estruturas Lineares Um dos exemplos mais significativos de estruturas não-lineares são

Leia mais

Árvores Binárias - continuação

Árvores Binárias - continuação Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Uma Aplicação de Árvores Binárias Árvores Binárias - continuação As árvore binárias são estruturas importantes toda vez que uma

Leia mais

Algoritmos e Estruturas de Dados: Árvore Binária de Busca

Algoritmos e Estruturas de Dados: Árvore Binária de Busca Busca pelo nodo 72 Árvore Binária de Busca Introdução 2/21 Algoritmos e Estruturas de Dados: Árvore Binária de Busca 44 Raiz Rômulo Silva de Oliveira Departamento de Automação e Sistemas DAS UFSC romulo@das.ufsc.br

Leia mais

1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2

1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2 Índice i Índice Capítulo 4 Estrutura de Dados não sequencial com armazenamento não sequencial ( Árvore ) 1. Introdução... 1 1.1. Definição... 1 1.2. Conceitos relacionados... 2 2. Árvores binárias... 2

Leia mais

Algoritmos e Estrutura de Dados. Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 13 Estrutura de Dados: Árvores de Pesquisa Binária Prof. Tiago A. E. Ferreira Introdução Uma árvore de pesquisa binária são estruturas de dados que admitem operações

Leia mais

Árvores Binárias e Busca. Jeane Melo

Árvores Binárias e Busca. Jeane Melo Árvores Binárias e Busca Jeane Melo Roteiro Parte 1 Árvores Relação hierárquica Definição Formal Terminologia Caminhamento em Árvores Binárias Exemplos Parte 2 Busca seqüencial Busca Binária Grafos Conjunto

Leia mais

struct arv { char info; struct arv* esq; struct arv* dir; };

struct arv { char info; struct arv* esq; struct arv* dir; }; Estruturas Árvores 05/05/2008 Aula de (parte 16: Informação 2) ÁrvoreBinária Umaárvoreemquecadanótem Umaárvorebináriaé: umaárvorevazia; a nóraizcom subárvoredadireita(sad) subárvoredaesquerda(sae) duassub-árvores:

Leia mais

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada

Leia mais

Árvores e Árvores Binárias

Árvores e Árvores Binárias MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvores do capítulo 4 do livro N. Wirth. Algorithms + Data Structures

Leia mais

Figura 13.1: Um exemplo de árvore de diretório.

Figura 13.1: Um exemplo de árvore de diretório. 13. Árvores W. Celes e J. L. Rangel Nos capítulos anteriores examinamos as estruturas de dados que podem ser chamadas de unidimensionais ou lineares, como vetores e listas. A importância dessas estruturas

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números

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 Laboratório I Prof. Osório Balanceamento de Árvores Binárias Pag.: - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática LABORATÓRIO II AULA : Balanceamento

Leia mais

AED 2002/2003 p.1/21. Estrutura de dados elementar Métodos de travessia de árvores Procura em árvores binárias. Exemplos de clientes

AED 2002/2003 p.1/21. Estrutura de dados elementar Métodos de travessia de árvores Procura em árvores binárias. Exemplos de clientes AED 2002/2003 p.1/21 Árvores Binárias Estrutura de dados elementar Métodos de travessia de árvores Procura em árvores binárias Manipulação eficiente Exemplos de clientes AED 2002/2003 p.2/21 Árvores de

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

PROGRAMAÇÃO II 4. ÁRVORE

PROGRAMAÇÃO II 4. ÁRVORE 4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em

Leia mais

Árvores binárias de pesquisa com balanceamento. Algoritmos e Estruturas de Dados II

Árvores binárias de pesquisa com balanceamento. Algoritmos e Estruturas de Dados II Árvores binárias de pesquisa com balanceamento Algoritmos e Estruturas de Dados II Árvores binárias de pesquisa Pior caso para uma busca é O(n) 1 3 Ordem de inserção: 1 3 2 4 5 6 2 4 5 6 2 Árvore completamente

Leia mais

ESTRUTURA DE DADOS DCC013

ESTRUTURA DE DADOS DCC013 ESTRUTURA DE DADOS DCC013 Árvores Pesquisa sequencial Preliminares Elementos pesquisados sucessivamente Comparação determina se o elemento foi encontrado ou não Exemplo: buscar 4 (Arrays e lista encadeada)

Leia mais

Aula T20 BCC202 Pesquisa (Parte 2) Árvores de Pesquisa. Túlio Toffolo www.decom.ufop.br/toffolo

Aula T20 BCC202 Pesquisa (Parte 2) Árvores de Pesquisa. Túlio Toffolo www.decom.ufop.br/toffolo Aula T20 BCC202 Pesquisa (Parte 2) Árvores de Pesquisa Túlio Toffolo www.decom.ufop.br/toffolo Árvore AVL n Árvore binária de busca tal que, para qualquer nó interno v, a diferença das alturas dos filhos

Leia mais

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Árvores Genéricas Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

Problemas com ABP Desbalanceamento progressivo

Problemas com ABP Desbalanceamento progressivo Árvores Binárias de Pesquisa Árvores Balanceadas Aresentam uma relação de ordem A ordem é definida ela chave Oerações: inserir consultar 5 excluir 3 8 15 4 6 9 Problemas com ABP Exemlo: Problemas com ABP

Leia mais

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA 6 Filas Estrutura de Dados A Estrutura de Dados Fila Fila é uma estrutura de dados usada em programação, que tem regras para

Leia mais

2ª Lista de Exercícios

2ª Lista de Exercícios Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,

Leia mais

{ fazer Pós-Ordem sem recursividade. Poderá cair na prova!!! }

{ fazer Pós-Ordem sem recursividade. Poderá cair na prova!!! } 1 Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Prof.: José Luiz A. Duizith A B D.. C E. E C Pré: A B C D E B In : B C A E D D Pos: C B E D A A Usando Pilha Procedimento

Leia mais

Árvores. Algoritmos e Estruturas de Dados 2005/2006

Árvores. Algoritmos e Estruturas de Dados 2005/2006 Árvores Algoritmos e Estruturas de Dados 2005/2006 Árvores Conjunto de nós e conjunto de arestas que ligam pares de nós Um nó é a raiz Com excepção da raiz, todo o nó está ligado por uma aresta a 1 e 1

Leia mais

Estrutura de Dados Árvores. Prof. Robinson Alves

Estrutura de Dados Árvores. Prof. Robinson Alves Estrutura de Dados Árvores Prof. Robinson Alves O que é uma árvore Em Computação, é um modelo abstrato de uma estrutura hierárquica Uma árvore consiste de nós com uma relação pai-filho Brasil Vendas Internacional

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

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um

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

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

ÁRVORES. Profa. Me. Andréa Zotovici

ÁRVORES. Profa. Me. Andréa Zotovici 1 ÁRVORES Profa. Me. Andréa Zotovici ÁRVORES BINÁRIAS É um conjunto finito de elementos, vazio ou particionado em três subconjuntos disjuntos. Nó Raiz A Subárvore Esquerda Nó Raiz da Subárvore Esquerda

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

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

void ins_ele (ARV_BIN_BUSCA *arv, int v) { if (!(*arv)) maketree(arv, v); else if (v<info(*arv)) /* if (v<(*arv)->info) */ ins_ele(&((*arv)->left),

void ins_ele (ARV_BIN_BUSCA *arv, int v) { if (!(*arv)) maketree(arv, v); else if (v<info(*arv)) /* if (v<(*arv)->info) */ ins_ele(&((*arv)->left), void ins_ele (ARV_BIN_BUSCA *arv, int v) { if (!(*arv)) maketree(arv, v); else if (vleft), v); else ins_ele(&((*arv)->right), v); 466 467 Árvore

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

Á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

Árvores - Introdução (1)

Árvores - Introdução (1) AED Algoritmos e Estruturas de Dados LEEC - 2004/2005 Árvores Árvores - Introdução (1) As árvores são estruturas de dados usadas em diversas aplicações na vida comum: Bases de dados de grande dimensão.

Leia mais

UFSC-CTC-INE INE5384 - Estruturas de Dados. Árvores. Prof. Ronaldo S. Mello 2002/2. Árvore

UFSC-CTC-INE INE5384 - Estruturas de Dados. Árvores. Prof. Ronaldo S. Mello 2002/2. Árvore US-T-IN IN5384 - struturas de ados Árvores Prof. Ronaldo S. Mello 2002/2 Árvore Uma árvore é uma estrutura que mantém uma relação de hierarquia ou composição entre os dados 1 xemplo João (P) Paulo () na

Leia mais

Classificação e Pesquisa de Dados

Classificação e Pesquisa de Dados Classificação e Pesquisa de Dados Aula 20 Árvores B e B+ B-Trees (Árvores B) [Bayer & McCreight 1970] UFRGS INF01124 B-Trees (Árvores B) Árvores de pesquisa balanceadas, projetadas para minimizar o tempo

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

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC 5710 - Estruturas de Dados - 2008

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC 5710 - Estruturas de Dados - 2008 MAC 5710 - Estruturas de Dados - 2008 Fila de prioridade Fila de prioridade é uma estrutura de dado que mantém uma coleção de elementos, cada um com uma prioridade associada. Valem as operações seguintes.

Leia mais

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron

Leia mais

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento

Leia mais

PAA-DCC-UFAM. Árvores. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

PAA-DCC-UFAM. Árvores. Universidade Federal do Amazonas Departamento de Eletrônica e Computação Árvores Universidade Federal do Amazonas Departamento de Eletrônica e Computação Árvores Árvores são conjuntos cujos elementos guardam uma relação hierarquica entre eles Terminologia (1) A é o nodo raiz.

Leia mais

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1

LEIC-FEUP 2001/2002 Algoritmos e Estruturas de Dados 1. Árvores-1 Sumário Árvores Definições Árvore binária Nó de árvore Implementação Iteradores de árvore pré-ordem, pós-ordem, in-ordem Árvore de pesquisa binária Nó de árvore Implementação Árvore com nível Árvores Conjunto

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

Busca em Memória. Secundária

Busca em Memória. Secundária UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Busca em Memória Secundária e Gomes da Costa yandre@din.uem.br 1 Busca de um item em uma massa de dados que não cabe na memória principal; Procura-se

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Árvores Existe uma ampla variedade de dados que são comumente organizados sob a forma de árvores hierárquicas utilizadas recorrentemente em nosso dia a dia. Exemplos são a organização administrativa de

Leia mais

Árvores Trie e Patricia. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com

Árvores Trie e Patricia. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Árvores Trie e Patricia Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Árvores Trie Definida em 1960 por Edward Fredkin Vêm de Retrieval (Relacionado à Recuperação de Informações) Para

Leia mais

Métodos de Pesquisa em Memória Primária

Métodos de Pesquisa em Memória Primária Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Pesquisa Por pesquisa (procura ou busca) entende-se o ato

Leia mais

Estruturas de Dados. Árvores AVL. Cesar Tadeu Pozzer. pozzer3@gmail.com, pozzer@inf.ufsm.br. Curso de Ciência da Computação UFSM (12/12/2007)

Estruturas de Dados. Árvores AVL. Cesar Tadeu Pozzer. pozzer3@gmail.com, pozzer@inf.ufsm.br. Curso de Ciência da Computação UFSM (12/12/2007) struturas de ados Árvores VL esar Tadeu Pozzer pozzer3@gmail.com, pozzer@inf.ufsm.br.b urso de iência da omputação UFSM (12/12/2007) Árvore VL Uma árvore binária é denominada VL quando a diferença de altura

Leia mais

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43 AULA A 3 ESTRUTURA RA DE DADOS Árvore B Esperamos que, ao final desta aula, você seja capaz de: identificar as vantagens da árvore B em relação às árvores binária de busca e AVL; conhecer as funções de

Leia mais

Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento

Leia mais

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas

Estruturas de Dados. Listas Dinâmicas Duplamente Encadeadas & Variantes. Listas Duplamente Encadeadas Estruturas de Dados Listas Dinâmicas Duplamente Encadeadas & Variantes Prof. Ricardo J. G. B. Campello Listas Duplamente Encadeadas Listas simplesmente encadeadas são ineficientes para realizar certas

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

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila EAD Fila - 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 frente/cabeça

Leia mais

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados Árvores AVL Prof. Othon M. N. Batista Estrutura de Dados Roteiro (/2) Árvore Binária de Pesquisa - Pior Tempo ABP Balanceada e Não Balanceada Balanceamento de Árvores Balanceamento de ABP Balanceamento

Leia mais

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

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes Pilhas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de

Leia mais

Pesquisa Sequencial e Binária

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

Leia mais

Introdução. Árvore B. CaracterísMcas. Origem do Nome. Exemplo. Grau. Rohit Gheyi. B vem de balanceamento

Introdução. Árvore B. CaracterísMcas. Origem do Nome. Exemplo. Grau. Rohit Gheyi. B vem de balanceamento Árvore B Rohit Gheyi Introdução Rudolf Bayer, Binary B Trees for Virtual Memory, ACM SIGFIDET Workshop 97, San Diego, California, Session B, p. 9 3 MoMvação Custo alto de acesso a memória secundária A

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

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um

Leia mais

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/ ========================TDA.H #include "info.h" #define TRUE 1 #define FALSE 0 #define INI_LISTA 1 #define OK 1; #define NOK -1; typedef struct nolista{ info dados; struct nolista *prox; struct nolista

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

Métodos Computacionais. Fila

Métodos Computacionais. Fila Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai

Leia mais

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras

Árvore Binária de Busca. Algoritmos e Estrutura de Dados II. Operações Busca e Sucessor. Árvore Binária de Busca. Árvores Rubro-Negras Árvore Binária de Busca Algoritmos e Estrutura de Dados II Árvores Rubro-Negras Prof. Marco Aurélio Stefanes marco em dct.ufms.br Propriedades Se está na subárvore esquerda de então chave() chave() Se

Leia mais

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro

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

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

Pesquisa em Memória Primária. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida

Leia mais

Pesquisa digital. Algoritmos e Estruturas de Dados II

Pesquisa digital. Algoritmos e Estruturas de Dados II Pesquisa digital Algoritmos e Estruturas de Dados II Pesquisa digital A pesquisa digital usa a representação das chaves para estruturar os dados na memória Por exemplo, a representação de um número em

Leia mais

Modelagem Conceitual parte II

Modelagem Conceitual parte II Modelagem Conceitual arte II Vitor Valerio de Souza Camos Objetivos Aresentar o conceito de. Mostrar a cardinalidade de. Aresentar os tios de s. Aresentar o conceito de entidade fraca Aresentar o conceito

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DO 2 o TESTE Grupo I (2.0 + 2.5 + 2.0 = 6.5 val.) I.a) Considere os tipos enum ocasiao e Presente

Leia mais

Árvores B (Parte III)

Árvores B (Parte III) Árvores B (Parte III) Profa. Dra. Cristina Dutra de Aguiar Ciferri Algoritmos Estrutura de dados determina cada página de disco pode ser implementada de diferentes formas Implementação adotada contador

Leia mais

PROGRAMAÇÃO II 3. FILA DINÂMICA

PROGRAMAÇÃO II 3. FILA DINÂMICA 3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe

Leia mais