Você está na página 1de 20

Aula 10 - rvores Conceitos

rvores Binrias
Prof. Maurcio Duarte
UNIVEM
rvores - Definio
Uma rvore com tipo base T :

ou uma rvore vazia;
ou um n do tipo T com um conjunto de rvores
distintas associadas ao tipo T, chamadas de sub-
rvores. rvore uma estrutura homognea, isto ,
todos os ns so do mesmo tipo.

Representao

A


B C



D E F G H




I J K L M N O P

Terminologias
RAIZ: o n que est no topo da rvore. Na rvore
acima o n que contm a informao A.

DESCENDENTES: so os ns que esto ligados abaixo
de um n especfico.

DESCENDENTES DIRETOS: so os ns que esto
ligados diretamente ao n de nvel superior.

Terminologias
ALTURA DA RVORE: o mximo nvel de uma
rvore.

NVEL DE UM N: a distncia que o separa da raiz.
A raiz tem nvel = 0.

FOLHA: so os ns que no possuem descendentes.

GRAU DE UM N: o nmero de descendentes
diretos.

GRAU DE UMA RVORE: o mximo grau de seus
ns.

Na rvore utilizada como exemplo identifique:

a) quem a raiz ?
b) quem so as folhas ?
c) quem so os descendentes do n C ?
d) qual o grau do n G ?
e) qual o grau da rvore ?
f) qual o nvel do n E ?
g) qual altura da rvore ?

rvores Binrias
Uma rvore binria ordenada um conjunto finito
de ns que, ou vazio, ou consiste de uma raiz com
0, 1 ou 2 sub-rvores. Quando existem duas sub-
rvores estas so chamadas de sub-rvore
esquerda e sub-rvore direita. Por exemplo veja a
representao da expresso:

( a + b / c ) * ( d - e * f )

Esquematizando...



*

+ -



a / d *


b c e f
Declarao de um n em C
Cada n da rvore binria seria definido em C da
seguinte forma:

struct no_arvore {
int info;
struct no_arvore *esq, *dir;
};

Esquematizando...
Raiz


*

+ -


a / d *


b c e f


Terminologias...
Se A a raiz de uma rvore binria e B a raiz de sua
sub-rvore esquerda ou direita, ento diz-se que A o
pai de B e que B o filho direito ou esquerdo de A.

Um n sem filhos chamado de folha.

Dois ns so irmos se forem filhos direito e esquerdo
do mesmo pai.
Continuando...
Se todo n que no folha numa rvore
binria tiver sub-rvores esquerda e direita
no vazias, a rvore ser considerada rvore
estritamente binria.

No exemplo citado, tem-se uma rvore
estritamente binria.
Continuando...
Uma rvore binria completa de profundidade
(altura) d a rvore estritamente binria em que
todas as folhas estejam no mesmo nvel d.

Uma rvore dita perfeitamente balanceada se para
cada n da rvore, o nmero de ns em suas sub-
rvores esquerda e direita diferirem de no
mximo 1 n.
rvores Perfeitamente Balanceadas
Construir uma rvore com N elementos vago, pois
no especifica a posio dos ns (podem ser geradas
diversas rvores distintas) . Se especificarmos : a
construo de uma rvore com altura (profundidade)
mnima H, poderamos constru-la de acordo com o
esquema a seguir. Seja N o nmero de ns da rvore,
ento:

Esquematizando...

n=1 n=2 n=3 n=4 n=5





n=6 n=10

Total de ns...
Para estas representaes N o nmero de
ns e existe um n que a raiz. A sub-rvore
esquerda possui ( N div 2) ns e a sub-rvore
direita possui N - (N div 2) - 1 ns, estas so
chamadas de rvores perfeitamente
balanceadas.

Funo para criar uma rvore perfeitamente
balanceada com N ns
struct no_arvore *CAPB (int N)
{
struct no_arvore *r;
if (N==0)
r=NULL;
else
{
r = (struct no_arvore*) calloc (1, sizeof(struct no_arvore));
printf("\nDigite um valor => ");
scanf("%i",&r->info);
r->esq = CAPB(N/2);
r->dir = CAPB(N - N/2 - 1);
}
return r;
}


Funo main( )
void main()
{
int qtd;
struct no_arvore *Raiz;
clrscr();
printf ("Digite o nmero de ns para a
rvore");
scanf("%i",&qtd);
Raiz = CAPB(qtd);
....
}
Funo para imprimir a rvore
void Imprime(no_arvore *R)
{
if (R != NULL)
{
printf ("%i ",R->info);
Imprime (R->esq);
Imprime (R->dir);
}
}
Exerccio
Elabore uma funo que mostre os
descendentes diretos de um determinado n
da rvore.

Você também pode gostar