apresentação de Árvores binárias
DESCRIPTION
introdução ao conceito de árvores bináriasTRANSCRIPT
-
IFMT - CUIAB 1
rvores Binrias
Alberto Sales
-
2rvores Binrias Esquemas em rvores so utilizados para representar estruturas
hierrquicas (rvores genealgicas, campeonatos de futebol ou organizaes).
Na computao, as rvores podem ser utilizadas para representar decises, definies formais de linguagem ou mesmo para representar hierarquia entre elementos
Na programao: No contexto da programao e cincia da computao,
uma estrutura de dados que herda as caractersticas das topologias em rvore onde os dados esto dispostos de os dados esto dispostos de forma hierrquica forma hierrquica
um conjunto de dados hierarquicamente subordinado a outro
-
3rvores Binrias: analogia Uma rvore composta por um elemento principal chamado raiz, que
possui ligaes para outros elementos, que so denominados galhos ou filhos.
Estes galhos levam a outros elementos que tambm possuem outros galhos. O elemento que no possui galhos conhecido como folha ou n terminal.
-
4rvores Binrias: conceito Uma rvore binria um conjunto finito de elementos que est
vazio ou particionado em trs subconjuntos: raiz da rvore - elemento inicial (nico); subrvore da esquerda - se vista isoladamente compe uma
outra rvore; subrvore da direita - se vista isoladamente compe uma
outra rvore. A rvore pode no ter nenhum elemento (rvore vazia). A
definio recursiva e, devido a isso, muitas operaes sobre rvores binrias utilizam recurso.
As rvores onde cada n que no seja folha numa rvore binria tem subrvores esquerda e direita no vazias so conhecidas como rvores estritamente binrias. Uma rvore estritamente binria com n folhas tem 2n - 1 ns.
-
5rvores Binrias: conceito A figura abaixo apresenta um mtodo convencional de
representao de uma rvore. Nesta rvore, o elemento A a raiz da rvore, a subrvore da
esquerda o elemento B e a da direita representada pelo elemento C.
Um n sem filhos chamado de folha. Sendo A a raiz de uma rvore binria e B sua subrvore, dito que A pai de B e que B filho de A.
-
6rvores Binrias: relaes Outras relaes (e conceitos) podem ser observados na figura
apresentada abaixo: B e C so filhos de A. B e C so irmos. TA a subrvore enraizada em A, portanto toda a rvore. TF a subrvore enraizada em F, que contm os ns F, H e I. Ns sem filhos so chamados de folhas, portanto os ns D, G, H
e I so folhas.
-
7rvores Binrias: Caminho Um caminho da rvore composto por uma seqncia de ns
consecutivos (n1,n2 ,n3 ,,nkk-1,nk) tal que existe sempre a relao: nj pai de n1j+1.
Os k ns formam um caminho de comprimento k - 1. O comprimento entre o n A e o n H 3.
-
8rvores Binrias: Nvel de n O nvel de um n pode ser definido como o n raiz de nvel 0.
Os outros ns tm um nvel que uma unidade a mais do que o nvel do seu pai.
Na rvore da Figura tem-se: Nvel 0: A Nvel 1: B e C Nvel : D, E e F Nvel : G, H e I
-
9rvores Binrias: Nvel de n Altura de um n o comprimento do maior caminho do n at
alguns de seus descendentes. Descendentes do n so todos os ns que podem ser
alcanados caminhando-se para baixo a partir do n. A altura de cada uma das folhas 1.
Desta maneira a altura de A 4, a altura de C 3 enquanto que de E e F 2.
-
10
rvores Binrias: rvore Binria Completa
Na Figura a pode ser vista uma rvore completa de nvel 3 . Uma rvore completa uma rvore estritamente binria na qual
todas as folhas esto no mesmo nvel k. Sendo k a profundidade da rvore, o nmero total de ns 2k+1-1
e o nmero total de folhas k. Embora uma rvore binria completa possua muitos ns (o
mximo para cada profundidade), a distncia da raiz a uma folha qualquer relativamente pequena.
A rvore da Figura tem profundidade 3 com 15 ns (24 - 1) e 8 folhas (23).
-
11
rvores Binrias: rvore Binria Completa
O nmero total de ns numa rvore binria completa de profundidade d, tn, igual soma do nmero de ns em cada
nvel entre 0 e d. Sendo assim:
-
12
rvores de Busca Binria Uma rvore de busca binria (Binary search tree) uma rvore
binria onde a informao que o n esquerdo possui menor ou igual informao da chave.
De forma anloga, a informao que o n direito possui maior ou igual informao da chave.
O objetivo de organizar dados em rvores de busca binria facilitar a tarefa de procura de um determinado valor.
A partir da raiz e de posse da informao a ser encontrada, possvel saber qual o caminho (galho) a ser percorrido at encontrar o n desejado.
Para tanto, basta verificar se o valor procurado maior, menor ou igual ao n que se est posicionando
-
13
rvores de Busca Binria Deve-se observar que no existe uma nica forma de organizar
um conjunto de informaes em uma rvore de busca binria, ainal, dependendo da escolha do n raiz, obtm-se rvores diferentes.
Na figura os valores ({ 2, 3, 5, 5, 7, 8}) so organizados em rvores de busca de duas maneiras diferentes.
-
14
rvores de Busca Binria As duas rvores contm exatamente os mesmos valores, porm
possuem estruturas diferentes. Enquanto a rvore A est enraizada em um dos ns de valor 5, a
rvore B est enraizada no n de valor 2. Supondo que se est buscando o valor 8 nas rvores, as
comparaes seriam como se segue na tabela.
-
15
rvores de Busca Binria Na rvore A, so realizadas menos comparaes em relao
utilizada na rvore B. O melhor caso ir ocorrer quando a rvore estiver cheia, neste
caso a procura de um item ter tempo proporcional a log n, enquanto o pior caso ocorrer quando todos os ns da rvores apontarem somente para um dos lados, caso em que o tempo de processamento da procura ser proporcional a n.
-
16
Operaes em rvores Binrias: Insero
A insero comea com uma busca procurando pelo valor na rvore.
Se o elemento no existir na vore, alcanada a folha, e ento inserido o valor nesta posio.
Ou seja, examinada a raiz e introduzido um novo n na subrvore da esquerda, se o valor novo menor do que a raiz, ou na subrvore da direita, se o valor novo for maior do que a raiz.
Os algoritmos (verso iterativa) e (verso recursiva), Os algoritmos (verso iterativa) e (verso recursiva), respectivamente, demonstram o processo de incluso de um respectivamente, demonstram o processo de incluso de um elemento na rvoreelemento na rvore.
-
17
-
18
-
19
Operaes em rvores Binrias: Insero
Os algoritmos deixam claro o processo de insero, o novo valor primeiro comparado com o valor da raiz: Se seu valor for menor que a raiz, comparado ento com o
valor do filho da esquerda da raiz. Se seu valor for maior, ento compara-se com o filho da
direita da raiz. Este processo continua at que se chegue a um n folha, e ento
adiciona-se o filho direita ou esquerda, dependendo de seu valor ser maior ou menor que o valor da folha.
-
20
rvores Binrias: Pesquisa Para a busca em uma rvore binria por um valor especfico
deve-se examinar a raiz: Se o valor for igual raiz, o valor existe na rvore. Se o valor for menor do que a raiz, ento deve-se buscar na
subrvore da esquerda, e assim recursivamente em todos os ns da subrvore.
Similarmente: se o valor for maior que a raiz, ento deve-se buscar na
subrvore da direita. At alcanar o n-folha da rvore, encontrando-se ou no o
valor requerido
-
21
rvores Binrias: Pesquisa
-
22
rvores Binrias: Pesquisa
-
23
rvores Binrias: Exemplo#define FILHOS 4typedef struct NO {
int info;struct NO *pai;struct NO *filhos[FILHOS];
} NO;
typedef struct NO {int info;struct NO *pai;struct NO *filho; /* 10 filho */struct NO *irmao; /* prximo irmo*/
} NO;
Representao com vetor de filhos
Representao Dinmica
-
24
rvores Binrias: Exemplo Na figura fica clara a representao de rvores, com vetores, ter
limitaes para a quantidade de filhos.
-
25
rvores Binrias: Exemplo No programa, com ponteiros, o campo filho for um ponteiro
para subrvore esquerda e o campo irmao como o ponteiro para a raiz da subrvore direita, tem-se uma rvore binria como a representada na figura abaixo.
-
26
rvores Binrias: Exemplo Com o programa a seguir, tem-se a representao de uma rvore
binria conforme a Figura vista anteriormente.
typedef struct NO {int info;struct NO *esquerda;struct NO *direita;struct NO *pai;
} NO;
-
27
rvores Binrias: Exemplo
-
28
rvores Binrias: Exemplo
-
29
rvores Binrias: Representao Como acontece com os ns de listas, os ns de rvores podem
ser implementados como elementos de vetores ou como alocaes de uma varivel dinmica. Cada n contm os campos info, left, right e father.
Os campos left, right e father de um n apontam para o filho esquerdo, para o filho direito e para o pai do n, respectivamente.
Usando a implementao de vetor, podemos declarar:
#define NUMNODES 500struct nodetype {
int info;int left;int right;int father;
};struct nodetype node[numnodes];
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29