Notas

Anuncio
Intro
oducción a la Program
mación II
Arboles
¾ Necessidad de una estrructura con mayo
or
velociidad de acceso.
a
¾Estrucctura de árbol.
á
¾Recorrridos y accesos.
a
¾Alta de
d un nod
do en el árbol.
á
¾Baja de
d un nod
do en el árbol.
¾Modifficación de
d datos de un no
odo del árbol.
á
¾Árbolees balancceados.
Intro
oducción a la Program
mación II
Co
osto
dee acceeso a datoss
Memoria
Arrreglo (20)
7
13
18
25
34
37
39
4
41
47
49
51
53
55
56
Lista
aSimple
9En el
e arreglo, accceso por biisección.
(Cossto máximo
o= l2N)
(con
n 1.000 elem
mentos = 10)
9En laa lista, accesso secuencial.
(Cossto promedio
o = N/2)
(con 1.000 elem
mentos = 500
0)
62
67
7
80
95
…
25
13
60
34
18
7
58
Intro
oducción a la Program
mación II
Árbo
ol
xx
Intro
oducción a la Program
mación II
Árb
bol biinario
o
Memo
oria
A
Arbol
22
35
14
18
29
19
46
44
58
Intro
oducción a la Program
mación II
Memoria
Alguna
A
as Deffinicio
ones
Arb
bol
22
2
35
14
18
29
46
9Gra
ado es el número
o máximo de hijo
os que tienen los nodos del árbol. Así, en el ejemp
plo anterior el
árboll es de grado dos (binario). Por lo
o tanto una lista no
n es más que un
n árbol de grado uno.
u
9Nodo Padre de un nodo
n
X es aquel que apunta al miismo. Cada nodo
o sólo puede teneer un padre.
9Nodo Hijo de otro nodo
n
Z es cualqu
uier nodo apuntad
do por el nodo Z.
9Nodo Raíz es el úniico del árbol que no tiene padre.
9Hoj
ojas son todos loss nodos que no tienen hijos.
9Nodos Interiores so
on los nodos que no son ni el nod
do raíz, ni nodos hoja.
mino es una secu
uencia de nodos, en el que dos no
odos consecutivo
os cualesquiera so
on padre e hijo.
9Cam
9Ram
ma es un camino
o desde el nodo raíz
r a una hoja.
9Nivvel de un nodo, es el número de nodos
n
del camino
o desde la raíz haasta dicho nodo. Nivel
N
de raíz=1.
9 Alttura es el máxim
mo número de nodos de las ramass del árbol.
9Bossque es un conju
unto de árboles.
Intro
oducción a la Program
mación II
Defin
D
ición de árrbol
Memoria
Arbol
22
35
14
18
29
19
46
4
44
Ty
ype PuntArboll = ^TipoNodo
oArbol;
TipoNodoA
Arbol = recorrd
Nro : Integer;
ores, Mayores:: PuntArbol
Meno
End;
Va
ar ElArbol : Pu
untArbol;
58
Intro
oducción a la Program
mación II
Recor
R
rrido en árb
bol
Memoria
Arbol
22
35
14
18
29
19
46
4
44
Prrocedure MosstrarDatos(Poss: PuntArbol);
Beegin
t
begin
if Pos <> nil then
MostrarDa
atos(Pos ^.Meenores);
writeln(Pos ^.Nro);
atos(Pos ^.Ma
ayores);
MostrarDa
end;
En
nd;
58
En ordeen
E
A
Ascende
ente
Intro
oducción a la Program
mación II
Recor
R
rrido en árb
bol
Memoria
Arbol
22
35
14
18
29
19
46
4
44
Prrocedure MosstrarDatos(Poss: PuntArbol);
Beegin
t
begin
if Pos <> nil then
MostrarDa
atos(Pos ^.Ma
ayores);
writeln(Pos ^.Nro);
atos(Pos ^.Meenores);
MostrarDa
end;
En
nd;
58
En ordeen
E
D
Descend
dente
Intro
oducción a la Program
mación II
Modo
os de recorrrido en
e árb
bol
Memoria
Arbol
22
35
14
18
29
19
46
44
58
Prrocedure MosstrarDatos(Poss: PuntArbol);
Beegin
t
begin
if Pos <> nil then
MostrarDa
atos(Pos ^.Meenores);
writeln(Pos ^.Nro);
atos(Pos ^.Ma
ayores);
MostrarDa
end;
En
nd;
In
n Ordeer
Intro
oducción a la Program
mación II
Modo
os de recorrrido en
e árb
bol
Memoria
Arbol
22
35
14
18
29
19
46
44
58
Prrocedure MostrarDatos(Poss: PuntArbol);
Beegin
t
begin
if Pos <> nil then
writeln(Po
os ^.Nro);
MostrarDa
atos(Pos ^.Meenores);
MostrarDa
atos(Pos ^.Ma
ayores);
end;
En
nd;
P Ord
Pre
der
Intro
oducción a la Program
mación II
Modo
os de recorrrido en
e árb
bol
Memoria
Arbol
22
35
14
18
29
19
46
44
58
Prrocedure MosstrarDatos(Poss: PuntArbol);
Beegin
t
begin
if Pos <> nil then
MostrarDa
atos(Pos ^.Meenores);
MostrarDa
atos(Pos ^.Ma
ayores);
writeln(Pos ^.Nro);
end;
En
nd;
P Orrder
Post
Intro
oducción a la Program
mación II
B ueda en árb
Búsqu
bol
Memoria
Arbol
22
35
14
18
29
19
46
4
44
58
Fu
unction Punteero(Pos: PuntA
Arbol, Valor: Integer):PunttArbol;
Beegin
hen
if Pos = nil th
Puntero := nil
Nro = Valor then
else if Pos^.N
Puntero := Pos
Nro < Valor then
else if Pos^.N
Puntero := Puntero (Pos^.Mayores,Va
alor);
else
alor);
Puntero := Puntero (Pos^.Menores,Va
En
nd;
Intro
oducción a la Program
mación II
Memoria
Altta en árboll
Arbol
22
35
14
18
29
19
46
4
44
Prrocedure Alta((var Pos: Pun
ntArbol, Valor: Integer);
Beegin
hen begin
if Pos = nil th
new(Pos);
= Valor;
Pos^.Nro :=
Pos^.Meno
ores := nil; Poss^.Mayores :=
= nil;
end else if Po
os^.Nro < Valo
or then
Alta (Pos^.M
Mayores,Valo
or);
else
or);
Alta (Pos^..Menores,Valo
En
nd;
58
Intro
oducción a la Program
mación II
Arbol
Baj
aja en árboll
22
35
14
18
29
19
46
44
5
58
9B
Borrar un
n nodo sin
n hijos ó nodo
n
hoja
a: simplem
mente se
borrra y se establece a nulo
n
el ap
puntador de
d su padree.
9B
Borrar un
n nodo con
n un subá
árbol hijo
o: se borraa el nodo
y see asigna su subárbo
ol hijo com
mo subárbo
ol de su padre.
p
9B
Borrar un
n nodo co
on dos su
ubárboless hijo: es el caso
com
mplejo quee veremoss a continu
uación.
Intro
oducción a la Program
mación II
Baj
aja en árboll
Baj
aja en árboll
Intro
oducción a la Program
mación II
M ficació
Modifi
ón de datoss de árrbol
9Dato no
o Clave: No
N hay nad
da a modificar.
9Dato Cllave: Si modifica
m
su
u posición
n se puede dar de
baja y altaa en la nueeva posiciión.
Intro
oducción a la Program
mación II
Idea sobre
s
balan
nceo de
d árb
bol
Peo
or situació
ón:
Mejo
or situación
n:
Descargar