Académique Documents
Professionnel Documents
Culture Documents
1. Definicin.
2. Conceptos Generales.
3. Arboles Binarios.
3.1 Definicin.
3.2 Implementacin.
3.3 Recorrido.
3.4 rboles Binarios de Bsqueda (ABB).
o Insercin de un nodo.
o Bsqueda de un nodo.
o Eliminacin de un nodo.
3.5 rboles de Expresin.
o Construccin.
o Evaluacin.
4. Ejemplos
1.- Definicin
1.- Definicin
1.- Definicin
1.- Definicin
( ( A + B ) / ( C D) ) * ( E - F )
ARBOLES
1. Definicin.
2. Conceptos Generales.
3. Arboles Binarios.
3.1 Definicin.
3.2 Implementacin.
3.3 Recorrido.
3.4 rboles Binarios de Bsqueda (ABB).
o Insercin de un nodo.
o Bsqueda de un nodo.
o Eliminacin de un nodo.
3.5 rboles de Expresin.
o Construccin.
o Evaluacin.
4. Ejemplos
3.1.- Definicin
Definicin: un rbol binario es un conjunto finito de nodos que puede estar vaco
o consistir en un nodo raz y dos rboles binarios disjuntos, llamados subrbol
izquierdo y subrbol derecho.
3.2.- Implementacin
IMPLEMENTACION DE ARBOLES
struct datos
{
char nombre[20];
int cedula, edad;
};
typedef datos
int DATO
DATO
struct NODO
{
DATO Info;
NODO * Izq, *Der;
};
};
nombre
cedula
edad
INFO
Izq
Der
10
3.2.- Implementacin
11
3.3.- Recorrido
s/a
izquierdo
s/a
derecho
12
3.3.- Recorrido
3.3.- Recorrido
IN - ORDEN
R
I
12
17
1
25
16
20
32
15
1 17 6 12 15 16 5 20 25 32
14
3.3.- Recorrido
PRE - ORDEN
R
I
12
17
1
25
16
20
32
15
5 12 17 1
6 16 15 25 20 32
15
3.3.- Recorrido
POST - ORDEN
R
I
12
17
1
25
16
20
32
15
6 17 15 16 12 20 32 25 5
16
3.3.- Recorrido
N
IN
I
N
PRE
17
12
1
PRE
IN
POST
25
16
20
D
N
POST
32
15
5 12 17 1 6 16 15 25 20 32
1 17 6 12 15 16 5 20 25 32
1 6 17 15 16 12 20 32 25 5
17
3.3.- Recorrido
Dados dos recorridos, dibujar el rbol correspondiente
IN
80
4,114
90
49,51,58,73,39,86,90
11 49,51,58,73,39,86
58
NULL
49
49,51
NULL
PRE
IN
51
D
N
PRE
NULL
39
73,39,86
73
86
80 4 11 90 58 49 51 39 73 86
4 11 80 49 51 58 73 39 86 90
18
3.3.- Recorrido
Recorrido INORDEN.-
Recorrido PREORDEN.-
19
RecIn(d1)
RecIn(d2)
cout<<d1->Info
RecIn(d3)
6 12 15 16 17 20 25 32
RecIn(d4)
RecIn(d6)
cout<<d3->Info
cout<<d2->Info
RecIn(d7)
RecIn(d5)
RecIn(d10)
RecIn(Null)
RecIn(d8)
cout<<d6->Info
cout<<d7->Info
cout<<d4->Info
cout<<d5->Info
RecIn(d9)
RecIn(Null)
RecIn(Null)
cout<<d10->Info
cout<<d8->Info
cout<<d9->Info
RecIn(Null)
20
21
ARBOLES
1. Definicin.
2. Conceptos Generales.
3. Arboles Binarios.
3.1 Definicin.
3.2 Implementacin.
3.3 Recorrido.
3.4 rboles Binarios de Bsqueda (ABB - BST).
o Insercin de un nodo.
o Bsqueda de un nodo.
o Eliminacin de un nodo.
3.5 rboles de Expresin.
o Construccin.
o Evaluacin.
4. Ejemplos
22
http://www.comscore.com/esl/Press_Events/Press_Releases/2010/1/Global_Search_Market_Grows_46_Percent_in_2009
23
Un Arbol Binario de Bsqueda (ABB) es aquel que, para cualquier nodo del
arbol (N) se cumple que, todos los nodos del sub-rbol izquierdo son menores
que N->Info, mientras que los nodos del sub-rbol derecho son mayores que N>Info
24
17
Raiz
NULL
Izq
Izq
NULL
Der
Der
d1
Info
17
25
14
NULL
d2
NULL
17
26
14
NULL
d2
NULL
NULL
Izq
NULL
Der
Info
14
17
27
20
BUSCAR(d1,20)
return d6
BUSCAR(d3,20)
BUSCAR(d3,20)
return d6
BUSCAR(d6,20)
BUSCAR(d6,2
0)
return d6
28
2.
3.
Borrar 16
Borrar 1
17
14
PADRE
16
15
4
1
PADRE
25
20
32
15 HIJO
29
2.
3.
Borrar 34
70
34
28
90
18
25
6
20
70
100
28
30
R
R
N
0
1
2
3
Elim(R,X)
Elim(d1,6)
Elim(d2,6)
Elim(d4,6)
Q=R
R=NULL
delete(Q)
R
d1
d2
d4
X
6
6
6
RInfo
34
18
6
31
R
Q
N
0
1
2
Elim(R,X)
R X RInfo
Elim(d1,90) d1 90 34
Elim(d3,90) d3 90 90
Q=R
R=Q->Der
delete(Q)
32
Q
R
P
P
P
Q
N
0
1
2
3
ELIM(R,X)
P Q R X RInfo
ELIM(d1,34)
d1 d1 34 34
REEMP(d2,d1) d2 d1
REEMP(d5,d1) d5 d1
REEMP(d8,d1) d8 d1
Q Info = P Info
Q=P
P = P Izq
delete(Q)
33
ARBOLES
1. Definicin.
2. Conceptos Generales.
3. Arboles Binarios.
3.1 Definicin.
3.2 Implementacin.
3.3 Recorrido.
3.4 rboles Binarios de Bsqueda (ABB).
o Insercin de un nodo.
o Bsqueda de un nodo.
o Eliminacin de un nodo.
3.5 rboles de Expresin.
o Construccin.
o Evaluacin.
4. Ejemplos
34
A*((B + C) / D) + (EF)
OPERADOR
+
*
OPERANDO
A*((B+C)/D)
OPERANDO
E-F
(B+C)/D
/
B+C
+
B
D
C
35
2.
3.
2.
3.
4.
5.
AB+CD-*
PILA
D5
D2
D4
D6
D1
D3
D7
36
37
EVAL(d1)
op1=Eval(d2)
op2=Eval(d3)
return (A+B)*(E-F)
EVAL(d3)
EVAL(d2)
op1=Eval(d4)
op1=Eval(d6)
op2=Eval(d5)
op2=Eval(d7)
return (E-F)
(A+B)
EVAL(d7)
EVAL(d4)
EVAL(d5)
EVAL(d6)
cin>>A
cin>>B
cin>>E
cin>>F
return val
38