Escolar Documentos
Profissional Documentos
Cultura Documentos
s-o
rd
e
m
co
n
ve
rte
n
o
ta
o
in
fixa
p
a
ra
p
o
sfixa
9#>%#3 ?)-@#).& 0(9
1lpo de dados absLraLo da rvore blnrla:
Vazia: () A
// elemento, arvore esquerda direita
Nodo: E " SAE " SAD A
9#>%#3 ?)-@#).& 0(9
1lpo de dados absLraLo da rvore blnrla:
Vazia: () A
// elemento, arvore esquerda direita
Nodo: E " SAE " SAD A
Que rvore essa ?
A = Nodo (5, Vazia,
Nodo (8,
Nodo (4, Vazia, Vazia),
Vazia)))
9#>%#3 ?)-@#).& 0(9
1lpo de dados absLraLo da rvore blnrla:
Vazia: () A
// elemento, arvore esquerda direita
Nodo: E " SAE " SAD A
Que rvore essa ?
A = Nodo (5, Vazia,
Nodo (8,
Nodo (4, Vazia, Vazia),
Vazia)))
5
8
4
rvore
vazia
9#>%#3 ?)-@#).& 0(9
Cperaes acessoras:
sae:: A A // retorna a subarvore esquerda
sad:: A A // retorna a subarvore direita
element :: A E // retorno o elemento do n
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
B
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
B
C
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
B
C
D
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
B
C
D
4D3#*7*)%
A = Nodo (5, Nil, Nodo (8, Nodo (4, Vazia, Vazia),
Vazia)))
B = sae (A)
C = sad (A)
D = sae(C)
X = element (D)
Y = element (A)
5
8
4
A
B
C
D
4D3#*7*)%$ #3$%,>)8%$
Alnda sem codlcar em C a nossa rvore, faremos os
segulnLes exerclclos.
odem fazer no papel ou bloco de noLas, no
preclsem compllar (apenas menLalmenLe).
usando recurslvldade e apenas as quaLro operaes
vlsLas anLerlormenLe, vamos fazer os segulnLes
exerclclos.
4D3#*7*)%$ #3$%,>)8%$
1. Some os valores dos elemenLos de uma arvore blnrla
int soma (ArvBin *a) {
if (a == Vazia())
return 0;
}
4D3#*7*)%$ #3$%,>)8%$
1. Some os valores dos elemenLos de uma arvore blnrla
int soma (ArvBin *a) {
if (a == Vazia())
return 0;
return elem(a)
+ soma (sae(a))
+ soma (sad(a));
}
4D3#*7*)%$ #3$%,>)8%$
1. 8eLorne a alLura de uma rvore blnarla. Cnde a 9,<"#. e
o Lamanho do malor camlnho desde a ralz aLe uma folha.
or denlo, a alLura de uma rvore vazla e -1.
int altura(ArvBin *a) {
}
4D3#*7*)%$ #3$%,>)8%$
1. 8eLorne a alLura de uma rvore blnarla. Cnde a 9,<"#. e
o Lamanho do malor camlnho desde a ralz aLe uma folha.
or denlo, a alLura de uma rvore vazla e -1.
int altura(ArvBin *a) {
if (a == Vazia())
return -1;
}
4D3#*7*)%$ #3$%,>)8%$
1. 8eLorne a alLura de uma rvore blnarla. Cnde a 9,<"#. e
o Lamanho do malor camlnho desde a ralz aLe uma folha.
or denlo, a alLura de uma rvore vazla e -1.
int altura(ArvBin *a) {
if (a == Vazia())
return -1;
return maior(
altura (sae (a)),
altura (sad (a))
) + 1;
}
4D3#*7*)%$ #3$%,>)8%$
1. 8eLorne a alLura de uma rvore blnarla. Cnde a 9,<"#. e
o Lamanho do malor camlnho desde a ralz aLe uma folha.
or denlo, a alLura de uma rvore vazla e -1.
int altura(ArvBin *a) {
if (a == Vazia())
return -1;
return maior(
altura (sae (a)),
altura (sad (a))
) + 1;
}
4D3#*7*)%$ #3$%,>)8%$
1. 8eLorne a alLura de uma rvore blnarla. Cnde a 9,<"#. e
o Lamanho do malor camlnho desde a ralz aLe uma folha.
or denlo, a alLura de uma rvore vazla e -1.
int altura(ArvBin *a) {
if (a == Vazia())
return -1;
return maior(
altura (sae (a)),
altura (sad (a))
) + 1;
}
int maior (int v1, int v2)
{
if (v1 > v2)
return v1 ;
else return v2;
}
LsLudem bem os concelLos
vlsLos nesLa aula anLes de
prossegulr. L faa as
auvldades.
LnLendldo esLes concelLos a
codlcao e slmples, e
possul aLe slmllarldades
com a codlcao da llsLa.
!%8)E*.FG%
A rvore blnrla e represenLado pela esLruLura
abalxo.
typedef struct ArvBin {
int elem;
struct ArvBin *sae;
struct ArvBin *sad;
} ArvBin;
!%8)E*.FG%
Cperaes consLruLoras
ArvBin* Vazia () {
return NULL;
}
ArvBin* Nodo (int elem, ArvBin* sae, ArvBin* sad ) {
ArvBin* a = (ArvBin*)malloc (sizeof (ArvBin));
a->elem = elem;
a->sad = sad;
a->sae = sae;
return a;
}
!%8)E*.FG%
Cperaes consLruLoras
ArvBin* Vazia () {
return NULL;
}
ArvBin* Nodo (int elem, ArvBin* sae, ArvBin* sad ) {
ArvBin* a = (ArvBin*)malloc (sizeof (ArvBin));
a->elem = elem;
a->sad = sad;
a->sae = sae;
return a;
}
!%8)E*.FG%
Cperaes consLruLoras
ArvBin* Vazia () {
return NULL;
}
ArvBin* Nodo (int elem, ArvBin* sae, ArvBin* sad ) {
ArvBin* a = (ArvBin*)malloc (sizeof (ArvBin));
a->elem = elem;
a->sad = sad;
a->sae = sae;
return a;
}
!%8)E*.FG%
Cperaes consLruLoras
ArvBin* Vazia () {
return NULL;
}
ArvBin* Nodo (int elem, ArvBin* sae, ArvBin* sad ) {
ArvBin* a = (ArvBin*)malloc (sizeof (ArvBin));
a->elem = elem;
a->sad = sad;
a->sae = sae;
return a;
}
!%8)E*.FG%
Cperaes consLruLoras
ArvBin* Vazia () {
return NULL;
}
ArvBin* Nodo (int elem, ArvBin* sae, ArvBin* sad ) {
ArvBin* a = (ArvBin*)malloc (sizeof (ArvBin));
a->elem = elem;
a->sad = sad;
a->sae = sae;
return a;
}
!%8)E*.FG%
Cperaes reLornar os aLrlbuLos da rvore.
int elem (ArvBin* b) { return b->elem;}
ArvBin* sae (ArvBin* b) { return b->sae;}
ArvBin* sad (ArvBin* b) { return b->sad;}
!%8)E*.FG%
Cdlgo para vlsuallzar uma rvore blnrla delLada"
void mostra (ArvBin *a, int n) {
if (a) {
int i;
mostra (sad(a), n+1);
for (i = 0; i < n; i++) printf ("\t");
printf ("%d\n", elem(a));
mostra (sae(a), n+1);
}
}
H)$".,)I.FG%
23
35
28
15
r
LxperlmenLem Lodos os
cdlgos felLos nesLa aula e
as auvldades posLadas no
slLe.
ALe logo !