









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Aula sobre árvores binarias
Tipologia: Notas de aula
1 / 17
Esta página não é visível na pré-visualização
Não perca as partes importantes!










1
Curso Superior de Tecnologia em Telemática Programação e Estruturas de Dados
Copyright© Prof. César Rocha [email protected]
ß Explorar os conceitos fundamentais acerca do uso de árvoresárvores utilizando a linguagem C ß Organização e implementação, características, vantagens, desvantagens, regras de utilização, operações básicas e algoritmos de implementação
ß Será abordada ainda uma implementação de árvore bastante conhecida: árvore bináriaárvore binária
ß Este módulo será utilizado como referência na entrega dos futuros projetos ß Implementação das estruturas e algoritmos, criação das bibliotecasbibliotecas e práticas de laboratório
ß Ao longo de todo o curso, temos examinado estruturas de dados que podem ser chamadas de unidimensionais ou lineares ß Por exemplo: TADs que usam vetores e todas as listas.
ß A importância destes tipos de estruturas é incontestável, porém... ß elas não são adequadas para representarmos dados que devem ser dispostos de maneira hierárquica ß não faz sentido, por exemplo, representar uma árvore de diretórios de um sistema operacional utilizando um vetor linear e pré-dimensionado
ß Uma árvoreárvore consiste de uma estrutura não-linear que representa uma relação de hierarquia
ß Uma árvore é composta por um conjunto de nósnós
ß Existe um nó R, chamado de nó raizraiz ß Este nó contém zero ou mais sub-árvores, cujas raízes são ligadas diretamente à R ß Os nós raízes das sub-árvores são ditos filhosfilhos do nó R ß Nós que não têm filhos são chamados de folhasfolhas
ß É bastante comum desenhar as árvores com o nó raiz para cima e os nós folhas para baixo
ß O número de sub-árvores presentes em um determinado nó indicará o GrauGrau desse nó ß Qual o grau de cada nó mostrado anteriormente?
ß Conceito de Grau Máximo:
ß número máximo de sub-árvores que o nó pode ser raiz
ß Nós que não tem grau, são chamados de nós folhas
ß Para identificar os nós de uma estrutura, usamos a relação de hierarquia existente em uma árvore genealógica ß Nó Filho, Nó pai, Nó neto, Nó irmão, ...
ß Conceito de NívelNível :
ß Representa a distância de um nó até a raiz ß Qual o nível do nó F (slide 6)?
ß Importante: o nó que apresentar o maior nível fornecerá a alturaaltura de uma árvore ß Só existe um caminho da raiz para qualquer nó
ß O número de filhos permitido em cada nó e as informações armazenadas nestes nós e que diferenciam os diversos tipos de árvores existentes
ß Em uma árvore binária, todos os seus nós possuem, no máximo, duas sub-duas sub-árvoresárvores ß Cada nó pode ter zero, um ou dois filhos. ß E ainda, é uma árvore de grau máximo igual a dois.
ß As duas sub-árvores possíveis em cada nó são também denominadas de: ß sub-árvore esquerda (sae). ß sub-árvore direita (sad).
ß Árvore binária completa
ß Árvore em que cada nó possui dois filhos (exceto os nós folhas, é claro).
Nó
sae sad
11
ß Observe:
ß Onde:
Nó
10
30
60
50
Nível 1^20
Nível 2
Nível 3
40
... ...
Raízes das sub-árvores Nós folhas (grau = 0)
Esquerda Direita
Grau máximo = 2
ß ß Importante!Importante!
ß Uma árvore é representada pelo endereço do nó raiz ß Uma árvore vazia é representada pelo valor NULL ß O nível de uma árvore que contém apenas o nó raiz é 0 ß A altura de uma árvore vazia é negativa e vale -
ß Percurso:
ß Um percurso define a ordem em que os nós de uma árvore serão processados ß Trabalharemos com três tipos de percursos: Pré-ordem, In-ordem e Pós-ordem
14
ß Algoritmos de percursos em árvores: å Pré-ordem ß Utiliza a raiz ß Percorre a sub-árvore esquerda ß Percorre a sub-árvore direita ç In-ordem ß Percorre a sub-árvore esquerda ß Utiliza a raiz ß Percorre a sub-árvore direita é Pós-ordem ß Percorre a sub-árvore esquerda ß Percorre a sub-árvore direita ß Utiliza a raiz
// Algoritmo recursivo pre-ordem void preordem( arvore arv ) { if(!vazia(printf( “%d”, arv->info arv ){ ); preordem( arv->esqpreordem( arv->dir );); } } // Algoritmo recursivo in-ordem void inordem( arvore arv ) { if(!vazia(inordem( arv->esq arv ){ ); printf( “%d”, arv->infoinordem( arv->dir ); ); } } // Algoritmo recursivo pos-ordem void posordem( arvore arv ) { if(!vazia(posordem( arv->esq arv ){ ); posordem( arv->dirprintf( “%d”, arv->info ); ); }}
ß O que deverá ser feito pelo aluno:
ß Escolha e instalação do ambiente a ser trabalhado no laboratório ß Modelagem deste TAD (dados e operações) ß Implementação dos algoritmos de operações básicas vistos em sala de aula na linguagem C ß Utilização das regras de modelagem vistas no módulo anterior (criação de bibliotecas) e modularização ß Implantação de código legível e bem documentado ß Nomes de variáveis condizentes com o problema ß Prática de laboratório
ß O aluno deve identificar a relação entre TAD (biblioteca e modularização) com a implementação da fila no código!
ß Resolva todas as questões da práprática detica de laboratólaboratório derio de áárvoresrvores
ß Procure o professor ou monitor da disciplina e questione conceitos, listas, etc.
ß Não deixe para codificar tudo e acumular assunto para a primeira avaliação. ß Este é apenas um dos assuntos abordados na prova!