Exemplo Árvore Binária

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

ESTRUTURAS DE DADOS E ALGORITMOS ÁRVORE BINÁRIA

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

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

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

Classificação e Pesquisa

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

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

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

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres

Pesquisa em memória primária

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

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

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

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

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

Estruturas de Dados. Aula 08. Árvores AVL II. Karina Mochetti

Aula T13 BCC202 Árvores. Túlio Toffolo

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

Árvores. Árvores Binárias. Conceitos gerais Terminologia Forma de Representação de Árvores. Conceitos gerais Operações

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

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

Árvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

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

INF1010 Lista de Exercícios 2

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

Árvores Binárias de Busca

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

Árvores AVL e Árvores B. Jeane Melo

UNIVERSIDADE DA BEIRA INTERIOR

Árvores Equilibradas. Sumário

Árvores & Árvores Binárias

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Estruturas de Dados II

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

DAINF - Departamento de Informática

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

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

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

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

EAD Árvore - representação usando listas ligadas

Árvores binárias de busca

Árvores de pesquisa. Árvores de pesquisa equilibradas

Estruturas de Dados I

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

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

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

Árvores Binárias de Busca

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

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

Árvore Binária de Busca

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

EAD Árvore árvore binária

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

Transcrição:

Á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 a localização de um arquivo no windows explorer se não 9véssemos diretórios? Árvores Coleção de nós em hierarquia Vazia ou Raiz (root) e zero ou mais subárvores (T1, T2,..., Tk) cada uma conectada com o nó raiz Raiz da subárvore é um nó filho do nó raiz N nós, N 1 arestas 3 Exemplo Árvore Binária Raiz Uma árvore binária é uma estrutura de dados caracterizada por: Subárvores 3... 2 8... 9 1 Ou não tem elemento algum (árvore vazia) Ou tem um elemento dis9nto, denominado raiz, com dois ponteiros para duas estruturas diferentes, denominadas sub árvore esquerda e sub árvore direita 5 1

2 Subárvores Exemplo A árvore a seguir é binária? Jus9fique. 9 5 2 1 3 8 8 Definições Cada Nodo pode ter grau Nenhum, um ou dois filhos A profundidade de um nó é a distância deste nó até a raiz. Tamanho (length): número de arestas seguidas no caminho A maior profundidade de um nó, é a altura da árvore. Um conjunto de nós com a mesma profundidade é denominado nível da árvore. Qual a profundidade do nó? Qual a altura da árvore? Os nós e 9 estão no mesmo nível? e e 11? Qual o grau do nó? E de 9? E de? 9 10 Árvores Estritamente Binárias A árvore a seguir é estritamente binária? Jus9fique. Cada nó da árvore possui grau zero ou dois 9 1 3 2 11 12 2

Árvores Binárias Completa 1 A árvore a seguir é completa? 3 2 9 1 Se todas as folhas de uma árvore estritamente binária estiverem no mesmo nível d 13 1 2 Caracterize a árvore a seguir. Árvore binária? Estritamente binária? Completa? Altura? D B E A H I J K L M N O F C G Nó Implemente um Nó representando uma árvore. class Node { private Node left; private Node right; private Node parent; private long key; private Object value; Dados Satélites 15 1 Árvore Binária de Pesquisa Árvore binária de busca ou árvore binária de pesquisa é uma árvore binária onde todos os nós são valores todos nós à esquerda contêm uma subárvore com os valores menores ao nó raiz da subárvore todos os nós da subárvore à direita contêm somente valores maiores ao nó raiz. A principal u9lização de árvores binárias são as árvores binária de busca Exemplo 2 Subárvores Condição de pesquisa < < > > > 1 18 3

Intuição x Applet hhp://people.ksp.sk/%ekuko/bak/index.html hhp://www.cosc.canterbury.ac.nz/mukundan/ dsal/bstnew.html < x > x 19 20 1 Desenhe graficamente uma árvore binária de pesquisa que possua os elementos {1,, 5, 10, 1, 1, 21 e tenha altura:, 5 e. 2 Qual o sucessor dos nós 30 e 0? O sucessor de 30 é 0 O sucessor de 0 é 50 Fazemos alguma comparação? 21 22 3 Como pesquisar o nó com chave 0? < 50 Applet hhp://www.cosc.canterbury.ac.nz/mukundan/ dsal/bst.html > 30 23 2

Pesquisa Binária Para saber se uma chave está presente na tabela: 1. Compare a chave com o registro que está na posição do meio da tabela 2. Se não 9ver subárvores, retorne falso 3. Se a chave é menor então o procure se está na subárvore esquerda. Se a chave é maior então o procure se está na subárvore direita 25 Algoritmo Implemente uma busca binária itera9va. Faça a análise do pior caso. public Node pesquisa(int key, Node y) { Node t = y; while( t!= null ) { if (key < t.element) t = t.left; else if (key > t.element) t = t.right; else return t; return null; 2 Árvore Desbalanceada O que ocorre com a pesquisa em uma árvore binária se ela es9ver desbalanceada? 2 88 O(n) < x x > x 9 95 Solução: Outras árvores, como AVL, que veremos depois. 2 28 O que o algoritmo a seguir faz? Faça a análise do pior caso. XYZ (T, z) y NIL x root [T] while x NIL do y x if key [z] < key[x] then x left[x] else x right[x] p[z] y if y = NIL then root [T] z else if key [z] < key [y] then left [y] z else right [y] z Inclusão A inserção começa com uma busca, procurando pelo valor Se não for encontrado, procuram se as subárvores da esquerda ou direita, como na busca Eventualmente, alcança se a folha, inserindose então o valor nesta posição Introduz se um nó novo na subárvore da esquerda se o valor novo for menor do que a raiz, Ou na subárvore da direita se o valor novo for maior do que a raiz 29 30 5

1 Insira os nodos,,, 5 5 TREE-INSERT (T, z) y NIL x root [T] while x NIL do y x if key [z] < key[x] then x left[x] else x right[x] p[z] y if y = NIL then root [T] z else if key [z] < key [y] then left [y] z else right [y] z 31 2 O que o algoritmo a seguir faz? Faça a análise do pior caso. XYZ (T, z) if left [z] = NIL OR right[z] = NIL then y z else y TREE-SUCCESSOR (z) if left [y] NIL then x left[y] else x right[y] if x NIL then p[x] p[y] if p[y] = NIL then root [T] x else if y = left [p[y]] then left [p[y]] x else right [p[y]] x if y z then key [z] key [y] // se y tiver outro campo, copiar return y 32 Exclusão Pesquisa pelo nó n com a chave k e Quando o nó n possui: 1. Dois filhos que são folhas Remova o nó n 2. Um nó filho que é folha Junte o pai de n com o único filho de n 3. Sem filhos que são folhas Procure o sucessor (antecessor) de n Subs9tua n pelo sucessor Remova o sucessor recursivamente Caso 1: Exclusão Remova o nodo 0 da árvore binária Remova o nodo 100 da árvore binária TREE-DELETE (T, z) if left [z] = NIL OR right[z] = NIL then y z else y TREE-SUCCESSOR(z) if left [y] NIL then x left[y] else x right [y] if x NIL then p[x] p[y] if p[y] = NIL then root [T] x else if y = left [p[y]] then left [p[y]] x else right [p[y]] x if y z then key [z] key [y] return y 33 3 Caso 2: Exclusão Remova o nodo 90 da árvore binária TREE-DELETE (T, z) if left [z] = NIL OR right[z] = NIL then y z else y TREE-SUCCESSOR (z) if left [y] NIL then x left[y] else x right [y] if x NIL then p[x] p[y] if p[y] = NIL then root [T] x else if y = left [p[y]] then left [p[y]] x else right [p[y]] x if y z then key [z] key [y] return y Caso 3: Exclusão Remova o nodo 35 da árvore binária substitui sucessor Remove (caso 2) 35 3

Caminhamento Façam um algoritmo que caminhe na árvore a seguir e mostre os elementos. Mas qual ordem adotar para percorrer nós? Tipos de Caminhamento Pré ordem Visita raiz Percorre sub árvore esquerda em pré ordem Percorre sub árvore direita em pré ordem Em ordem (simétrica) Percorre sub árvore esquerda em ordem simétrica Visita raiz Percorre sub árvore direita em ordem simétrica Pós ordem Percorre sub árvore esquerda em pós ordem Percorre sub árvore direita em pós ordem Visita raiz 3 38 Applet hhp://www.cosc.canterbury.ac.nz/mukundan/ dsal/btree.html Caminhamento Em Ordem Analise a complexidade do algoritmo. emordem(node n) { if (n!= null) { emordem(n.left); visita(n.element); emordem(n.right); 39 0 Qual a saída do caminhamento em ordem da árvore binária a seguir? 2,, 5,, 11, 2, 5, e 9 Analise. Pré Ordem preordem(node n) { if (n!= null) { visita(n.element); preordem(n.left); preordem(n.right); 1 2

Qual a saída do caminhamento em pré ordem da árvore binária a seguir? 2,, 2,, 5, 11, 5, 9 e Analise. Pós Ordem posordem(node n) { if (n!= null) { posordem(n.left); posordem(n.right); visita(n.element); 3 1 Qual a saída do caminhamento em pós ordem da árvore binária a seguir? Implementações hhp://www.docjar.com/html/api/iiuf/u9l/ BinaryTree.java.html hhp://www.docjar.com/html/api/freenet/ support/binarytree.java.html 2, 5, 11,,,, 9, 5 e 2 5 POSCOMP 2009 POSCOMP 2009 8 8

Referências Capítulo 13 1a edição Capítulo 12 2a edição 9 9