Á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

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

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

Á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

Á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

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

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

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

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

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA ESTRUTURAS DE DADOS E ALGORITMOS 1 ÁRVORE BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ÁRVORE (EXEMPLO) Como seria pesquisar a localização 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

Á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

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

- 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

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

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

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

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

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

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

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

Á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

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

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

Á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

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

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

Á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

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

- 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

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

Árvore binária - definição

Árvore binária - definição Árvore binária - definição árvore binária: conjunto finito de nós Æ (árvore vazia) {raiz, sub-árvore esquerda, sub-árvore direita}, onde sae e sad são conjuntos disjuntos Æ ou raiz /* nó da árvore binária

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

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

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

{ 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

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

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós

Leia 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

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

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

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

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

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

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

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

Á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

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto São estruturas de dados adequadas para a representação de hierarquias. Uma árvore é composta por um conjunto de nós. Existe um nó r, denominado raiz, que contém zero ou

Leia mais

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM Árvores Binária de Busca Prof. César Melo DCC/ICE/UFAM Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos

Leia 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

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual

Leia mais

Á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

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

Á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

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

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A LEIC Alameda, 2007/2008 Data: 12 de Junho de 2008 2 o Semestre Duração: 2h RESOLUÇÃO I. (2.5+2.5 = 5.0 val.) I.a) Suponha que está a trabalhar

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

Á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

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

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

Á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

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa Programação Funcional 15 a Aula Árvores de pesquisa Pedro Vasconcelos DCC/FCUP 2014 Árvores binárias Um árvore binária é um grafo dirigido, conexo e acíclico em que cada vértice é de um de dois tipos:

Leia mais

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456

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

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

Copiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)

Copiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12) Considere as seguintes declarações (NodoArv e PNodoArv), adaptadas dos apontamentos: struct NodoArv { int Elemento; struct NodoArv *Esquerda; struct NodoArv *Direita; ; typedef struct NodoArv *PNodoArv;

Leia mais

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

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 3) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

Algoritmos e Estruturas de Dados 2005/2006. árvore Vermelho-Preto cada nó tem no máximo 1 filho vermelho. Árvore AA ; semelhante a árvore BB, mas:

Algoritmos e Estruturas de Dados 2005/2006. árvore Vermelho-Preto cada nó tem no máximo 1 filho vermelho. Árvore AA ; semelhante a árvore BB, mas: Algoritmos e Estruturas de Dados 00/006 Árvore BB: árvore Vermelho-Preto cada nó tem no máximo 1 filho vermelho Árvore AA ; semelhante a árvore BB, mas: só filhos direitos podem ser vermelhos reduz casos

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

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material da Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar

Leia 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

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

Á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

Pesquisa em memória primária

Pesquisa em memória primária Pesquisa em memória primária Pesquisa em memória primária Recuperar informação a partir de uma grande massa de informação previamente armazenada. Existem vários métodos de pesquisa, depende de: Tamanho

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:

Leia mais

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr. Árvores, Árvores Binárias e Árvores Binárias de Pesquisa Rui Jorge Tramontin Jr. Tópicos Abordados Introdução Definição de Árvore Árvores Binárias Árvores Binárias de Pesquisa (ABP) UDESC / Rui J. Tramontin

Leia mais

Í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

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

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

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

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

Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO

Exame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO Exame de Admissão Programa de Pós-Graduação em Computação Aplicada Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A:2018-03 GABARITO Nome: Instruções: Preencha seu nome de forma legível,

Leia mais

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m Árvore B Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m 1valores; Os valores dentro de cada nó estão ordenados; Todos os valores na subárvore esquerda de um valor são menores que

Leia mais

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda

Leia mais

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

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

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura

Leia mais