Escolar Documentos
Profissional Documentos
Cultura Documentos
CAMPUS TIMÓTEO
Timóteo
2023
Vitor Rafael de Oliveira Nascimento
Timóteo
2023
.
Dedico a
algumas pessoas.
Agradecimentos
Orientador no terceiro?
1 EXPERIMENTO DE ÁRVORE . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
10
1 Experimento de árvore
Segundo o livro (ASCENCIO), as estruturas de dados do tipo árvore são não linea-
res, ou seja, os elementos que as compõem não estão armazenados de forma sequencial e
também não estão todos encadeados.
Uma árvore binária é um conjunto finito de elementos, onde cada elemento é deno-
minado nó e o primeiro é conhecido como raiz da árvore. Esse conjunto pode estar vazio ou
ser particionado em três subconjuntos distintos, sendo eles: Primeiro subconjunto (nó raiz),
segundo subconjunto (sub-árvore direita) e terceiro subconjunto (sub-árvore esquerda).
a) Todos os nós de uma sub-árvore direta são maiores que o nó raiz. b) Todos os nós
de uma sub-árvore esquerda são menores que o nó raiz. c) Cada sub-árvore é também uma
árvore binária d) O grau de um nó representa o seu número de sub-árvores. e) Em uma árvore
binária, o grau máximo de um nó é 2. f) O grau de uma árvore é igual ao máximo dos graus
de todos os seus nós. g) Uma árvore binária tem grau máximo igual a 2. h) Nó pai, nó acima e
com ligação direta a outro nó. i) Nó filho, nó abaixo e com ligação direta a outro nó. São os nós
raízes das sub-árvores. j) Nós irmãos, são os nós que possuem o mesmo nó pai. k) Nó folha
ou terminal, nó que não possui filhos. l) Nó ancestral, são os nós que estão acima de um nó e
possuem ligação direta ou indireta. m) Nó descendente, são os nós que estão abaixo de um
nó e possuem ligação direta ou indireta. n) Nós descendentes direito, são os nós que estão
abaixo de um nó, possuem ligação direta ou indireta e fazem parte da sub-árvore direita. o)
Nós descendentes esq uerdo,são os nós que estão abaixo de um nó, possuem ligação direta
ou indireta e fazem pa rte da sub-árvore esquerda p) Nível de um nó,é a sua distância do
nó raiz. Logo, o nível do nó raiz é sempre zero. q) Altura ou profundidade de uma árvore,é o
nível do nó mais distante da raiz. r) Expressão que representa o número máximo de nós em
um nível da árvore binária = 2n, onde n é o nível em questão. s) Arvore estritamente binária,
árvore em que todos os nós têm O ou 2 filhos. t) Expressão que representa o número de nós
de uma árvore estritamente binária = 2n-l, onde n é o número de nós folha. u)Árvore completa,
árvore em que todos os nós com menos de dois filhos ficam no último e no penúlt.imo nível. v)
Árvore cheia, árvore estritamente binária e completa
da direita, que é o mais velho, assume o lugar do nó pai. Nas operações de consulta, em
ordem, pré-ordem e pós-ordem, todos os nós da á rvore são listados, alterando-se apenas
sua ordem. Na consulta em ordem, cada árvore é mostrada com o ramo da esquerda, a raiz e
posteriormente o ramo da direita. Na consulta pré-ordem, cada árvore é mostrada com a raiz,
o ramo da esquerda e posteriormente o ramo da direita. Na consulta pós-ordem, cada árvore
é mostrada com o ramo da esquerda, o ramo da direita e posteriormente a raiz.
import java . util . *; public class Arvore Binaria NRecursiva //Definindo a classe que
represent ará 11 cada elemento da árvore binária private static class ARVORE public int num;
public ARVORE dir , esq; //Defini ndo a cl asse que representará /1 cada elemento da árvore
binária na pilha private static class PILHA public ARVORE num; public PILHA prox ; publi
c s t atic void main(S t ring args[)) Scanner entrada= new Scanner( System . in) ; 11 a ár-
vore está vazia , logo , 11 o objeto raiz tem o valor null ARVORE raiz = null ; 11 o obje to
aux é um objeto auxiliar ARVORE aux ; 11 o objeto auxl é um obj e t o auxiliar ARVORE
auxl; /1 o objeto novo é um objeto auxiliar ARVORE novo; 11 o objeto anterior é um ob jet o
auxi liar ARVORE anterior ; 11 o objeto topo representa a topo da pilha PILHA topo; 11 o objeto
aux𝑝 𝑖𝑙ℎ𝑎é𝑢𝑚𝑜𝑏𝑗𝑒𝑡𝑜𝑎𝑢𝑥𝑖𝑙𝑖𝑎𝑟𝑑𝑎𝑝𝑖𝑙ℎ𝑎𝑃 𝐼𝐿𝐻𝐴𝑎𝑢𝑥𝑝 𝑖𝑙ℎ𝑎; 11𝑎𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑎𝑛𝑑𝑜𝑜𝑚𝑒𝑛𝑢𝑑𝑒𝑜𝑝çõ𝑒𝑠𝑖𝑛𝑡𝑜𝑝, 𝑎𝑐ℎ𝑜𝑢, 𝑛𝑢𝑚𝑒𝑟𝑜;
𝑎𝑢𝑥.𝑑𝑖𝑟; 𝑆𝑦𝑠𝑡𝑒𝑚.𝑜𝑢𝑡.𝑝𝑟𝑖𝑛𝑡𝑙𝑛(′′ 𝑁 ú𝑚𝑒𝑟𝑜𝑖𝑛𝑠𝑒𝑟𝑖𝑑𝑜𝑛𝑎′ −á𝑟𝑣𝑜𝑟𝑒!!”); 𝑖𝑓 (𝑜𝑝 == 2)𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑛𝑢𝑙𝑙)𝑒𝑙𝑠𝑒11𝑎á𝑟𝑣𝑜𝑟𝑒𝑒
𝑠𝑒𝑟𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎𝑑𝑜”); 𝑛𝑢𝑚𝑒𝑟𝑜 = 𝑒𝑛𝑡𝑟𝑎𝑑𝑎.𝑛𝑒𝑥𝑡𝑖𝑛𝑡(); 𝑎𝑐ℎ𝑜𝑢 = 𝑂; 𝑎𝑢𝑥 = 𝑟𝑎𝑖𝑧;′ ”ℎ𝑖𝑙𝑒(𝑎𝑢𝑥! = 𝑛𝑢𝑙𝑙𝑎𝑐ℎ𝑜𝑢0)𝑖𝑓 (𝑎𝑢𝑥.𝑛𝑢
8); 𝑟𝑜𝑜𝑛𝑜𝑛10100100011 𝐶/𝐶++𝐶𝑎𝑝í𝑡𝑢𝑙𝑜7𝑜𝐸𝑠𝑡𝑟𝑢𝑡𝑢𝑟𝑎𝑠𝑑𝑒𝑑𝑎𝑑𝑜𝑠𝑑𝑜𝑡𝑖𝑝𝑜á𝑟𝑣𝑜𝑟𝑒303𝑖𝑛𝑐𝑙𝑢𝑑𝑒 < 𝑖𝑜𝑠𝑡𝑟𝑒𝑎𝑚.ℎ >
𝑖𝑛𝑐𝑙𝑢𝑑𝑒 < 𝑐𝑜𝑛𝑖𝑜.ℎ > 11𝐷𝑒𝑓 𝑖𝑛𝑖𝑛𝑑𝑜𝑜𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝑞𝑢𝑒𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑎𝑟á11𝑐𝑎𝑑𝑎𝑒𝑙𝑒𝑚𝑒𝑛𝑡𝑜𝑑𝑎á𝑟𝑣𝑜𝑟𝑒𝑏𝑖𝑛á𝑟𝑖𝑎𝑠𝑡𝑟𝑢𝑐𝑡𝐴𝑅𝑉 𝑂𝑅
𝑒𝑠𝑞, *𝑑𝑖𝑟; ; //𝐷𝑒𝑓 𝑖𝑛𝑖𝑛𝑑𝑜𝑜𝑟𝑒𝑔𝑖𝑠𝑡𝑟𝑜𝑞𝑢𝑒𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑎𝑟á11𝑐𝑎𝑑𝑎𝑒𝑙𝑒𝑚𝑒𝑛𝑡𝑜𝑑𝑎á𝑟𝑣𝑜𝑟𝑒𝑏𝑖𝑛á𝑟𝑖𝑎𝑛𝑎𝑝𝑖𝑙ℎ𝑎𝑠𝑡𝑟𝑢𝑐𝑡𝑃 𝐼𝐿𝐻𝐴(; 𝐴
𝑛𝑢𝑚; 𝑃 𝐼𝐿𝐻𝐴*𝑝𝑟𝑜𝑥; 𝑣𝑜𝑖𝑑𝑚𝑎𝑖𝑛()11𝑎á𝑟𝑣𝑜𝑟𝑒𝑒𝑠𝑡á𝑣𝑎𝑧𝑖𝑎, 𝑙𝑜𝑔𝑜, 1/𝑜𝑝𝑜𝑛𝑡𝑒𝑖𝑟𝑜𝑟𝑎𝑖𝑧𝑡𝑒𝑚𝑜𝑣𝑎𝑙𝑜𝑟𝑛𝑢𝑙𝑙𝐴𝑅𝑉 𝑂𝑅𝐸 * 𝑟𝑎𝑖𝑧 =
𝑑𝑖𝑟 = 𝑛𝑜𝑣𝑜; 𝑎𝑐ℎ𝑜𝑢 = 1; 𝑒𝑙𝑠𝑒𝑎𝑢𝑥 = 𝑎𝑢𝑥− > 𝑑𝑖𝑟; 𝑐𝑜𝑢𝑡 << ”ú𝑚𝑒𝑟𝑜𝑖𝑛𝑠𝑒𝑟𝑖𝑑𝑜𝑛𝑎á𝑟𝑣𝑜𝑟𝑒!!”; 𝑒𝑙𝑠𝑒𝑖𝑓 (𝑜𝑝 ==
2)𝑒𝑙𝑠𝑒𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑁 𝑈 𝐿𝐿))𝑒𝑙𝑠𝑒𝑖𝑓 (𝑜𝑝11𝑎á𝑟𝑣𝑜𝑟𝑒𝑒𝑠𝑡á𝑣𝑎𝑧𝑖𝑎𝑐𝑜𝑢𝑡 << ”Á𝑟𝑣𝑜𝑟𝑒𝑣𝑎𝑧𝑖𝑎!!”; 11𝑎á𝑟𝑣𝑜𝑟𝑒𝑐𝑜𝑛𝑡é𝑚𝑒𝑙𝑒𝑚𝑒𝑛
4𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑁 𝑈 𝐿𝐿)11𝑎á𝑟𝑣𝑜𝑟𝑒𝑒𝑠𝑡á𝑣𝑎𝑧𝑖𝑎𝑐𝑜𝑢𝑡 << ”Á𝑟𝑣𝑜𝑟𝑒𝑣𝑎𝑧𝑖𝑎!!”;𝑒𝑙𝑠𝑒11𝑎á𝑟𝑣𝑜𝑟𝑒𝑐𝑜𝑛𝑡é𝑚𝑒𝑙𝑒𝑚𝑒𝑛𝑡𝑜𝑠𝑒11𝑒𝑠𝑡𝑒𝑠
5)𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑁 𝑈 𝐿𝐿)308𝐸𝑠𝑡𝑟𝑢𝑡𝑢𝑟𝑎𝑠𝑑𝑒𝑑𝑎𝑑𝑜𝑠𝑒𝑙𝑠𝑒11𝑎á𝑟𝑣𝑜𝑟𝑒𝑒𝑠𝑡á𝑣𝑎𝑧𝑖𝑎𝑐𝑜𝑢𝑡 << ”Á𝑟𝑣𝑜𝑟𝑒𝑣𝑎𝑧𝑖𝑎!!”; 11𝑎á𝑟𝑣𝑜𝑟𝑒𝑐𝑜
−6)310𝐸𝑠𝑡𝑟𝑢𝑡𝑢𝑟𝑎𝑠𝑑𝑒𝑑𝑎𝑑𝑜𝑠𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑁 𝑈 𝐿𝐿)𝑒𝑙𝑠𝑒𝑐𝑜𝑢𝑡 << ”Á𝑟𝑣𝑜𝑟𝑒𝑣𝑎𝑧𝑖𝑎!!”; 𝑐𝑜𝑢𝑡 << ”𝑜𝑛ú𝑚𝑒𝑟𝑜𝑞𝑢𝑒 − .., .𝑑𝑒
𝑎𝑢𝑥− > 𝑑𝑖𝑟; 𝑎𝑢𝑥𝑙 = 𝑎𝑢𝑥− > 𝑒𝑠𝑞; 11𝑟𝑒𝑐𝑜𝑙𝑜𝑐𝑎𝑛𝑑𝑜𝑜𝑝𝑒𝑑𝑎ç𝑜11𝑑𝑎á𝑟𝑣𝑜𝑟𝑒𝑑𝑒𝑙𝑒𝑡𝑒𝑎𝑢𝑥; 𝑎𝑢𝑥 = 𝑟𝑎𝑖𝑧; 𝑤ℎ𝑖𝑙𝑒(𝑎𝑢𝑥! =
𝑁 𝑈 𝐿𝐿)𝑖𝑓 (𝑎𝑢𝑥− > 𝑛𝑢𝑚 < 𝑎𝑢𝑥𝑙− > 𝑛𝑢𝑚)𝐼𝑖𝑓 (𝑎𝑢𝑥− > 𝑑𝑖𝑟 − −𝑁 𝑈 𝐿𝐿)𝑎𝑢𝑥− > 𝑑𝑖𝑟 = 𝑎𝑢𝑥𝑙; 𝑎𝑢𝑥 − 𝑁 𝑈 𝐿𝐿; 𝑒𝑙
7)𝑖𝑓 (𝑟𝑎𝑖𝑧 == 𝑁 𝑈 𝐿𝐿)𝑐𝑜𝑢𝑡 << ”Á𝑟𝑣𝑜𝑟𝑒𝑣𝑎𝑧𝑖𝑎”; 𝑒𝑙𝑠𝑒𝑎𝑢𝑥 − 𝑟𝑎𝑖𝑧; /1𝑎𝑝𝑖𝑙ℎ𝑎, 𝑢𝑚𝑎𝑒𝑠𝑡𝑟𝑢𝑡𝑢𝑟𝑎𝑎𝑢𝑥𝑖𝑙𝑖𝑎𝑟, 𝑒𝑠𝑡á𝑣𝑎𝑧𝑖𝑎𝑔
Análise de Complexidade
A relação existente entre a altura da árvore (h) e o número de nós (n) de uma árvore
binária é uma informação muito importante em muitas aplicações. É comum a pergunta pela
altura máxima e mínima de árvores biná rias. Possuem altura máxima aquelas em que cada
Capítulo 1. Experimento de árvore 12
nó possui apenas um único filho. A altura de tais árvores é igual a n. Já uma árvore completa
possui altura mínima. Segundo Markenzon (1994), uma árvore binária completa com n > O
nós possui altura mínima h = 1 + Jlog nl. A operação de busca em uma árvore binária é
igual ao número de nós existentes no caminho desde a raiz da árvore até o nó procurado.
Em uma árvore binária genérica, no pior caso, esse nó se encontra a uma distância O(n) da
raiz da árvore, logo, a complexidade da busca é O(n). Conclui-se então que a complexidade
de busca corresponde à altura da árvore. No melhor caso, em que uma árvore pode poss uir
altura mínima, que é o caso de uma árvore biná ria completa, o tempo de busca é O(log n).
Considerando ainda uma árvore de altura mínima, na operação de inserção, o nó sempre é
inserido em uma folha, tendo que percorrer todos os nós desde a raiz, até chegar em uma
folha e acrescentar um filho a ela, gastando com isso a altura da árvore, ou seja, O(log n.). Na
operação de remoção, o pior caso acontece quando o nó a ser removido encontra-se em uma
folha no nível mais baixo. Gasta-se a altura da árvore para encontrá-lo, no caso de uma árvore
de altura mínima, e algumas operações constantes de atua lização de ponteiros, gerando uma
complexidade O(log n).
Referências