You are on page 1of 21

Universidad Tecnolgica de Panam

Facultad de Ingeniera de Sistemas Computacionales


Departamento de Computacin y Simulacin de Sistemas
ESTRUCTURA DE DATOS II
Prof.: Ing. Henry J. Lezcano- MAS
con Postgrado en Docencia Superior

ARBOLES BINARIOS

REPRESENTACION DE ARBOLES BINARIOS EN


MEMORIAS

Existen dos formas de representacin de rboles en memoria del


computadora, una se conoce como secuencial arreglos y la otra
mediantes listas enlazadas lineales.
Ing. Henry J. Lezcano FISC-UTP-2017 1
Representacin de A.B. Mediantes Listas Enlazadas
Usando la misma forma que las listas enlazadas lineales ya conocidas.
P
Diane Medin Joel Nill

Los nodos del rbol binario sern representados como registros que contendrn como
mnimo tres campos. En uno de los campos se almacenar la informacin de inters de nodo.
Los dos campos restantes se usaran para apuntar a los subrboles izquierdo y el subrbol
derecho del nodo en estudio.

Dado el siguiente nodo T, el cual contiene tres campos:

IZQ INFO DER

IZQ: campo donde se almacena la direccin del subrbol izquierdo del nodo T.

INFO: campo donde se almacena la informacin de inters del nodo. Normalmente en


ese campo se almacenan valores simples como nmeros o caracteres. Sin embargo, en la
prctica es comn almacenar en este campo registros, arreglos y conjuntos.

DER: campo donde se almacena la direccin del subrbol derecho del nodo T.

Ing. Henry J. Lezcano FISC-UTP-2016 2


Representacin de un A.B. en Memoria
Un rbol binario puede ser declarado de la siguiente forma en lenguaje algortmico:
Tipo
enlace = ^enlace;
Nodo = Registro
Info : entero;
Izq : enlace,
Der : enlace;
fin;

a. Para rbol binario de la Expresin Algebraica R= A*B + (C / D) ** 3.5


+

Cul sera su representacin


*
grfica en Memoria?

B / 3.5
A

C D

Ing. Henry J. Lezcano FISC-UTP-2016 3


Representacin de un A.B. en Memoria
b. Para la expresiones algebraicas construidas con operadores binarios su
representacin en memoria sera del caso a:

^
*

A B / 3.5

Nil Nil
Nil Nil Nil
C D

Nil Nil Nil

Ing. Henry J. Lezcano FISC-UTP-2016 4


Operaciones sobre los rboles Binarios
Antes de realizar cualquier operacin sobre una rbol binario hay que realizar el
procedimiento de carga de los nodos en Memoria.
CARGA (NODO)
{ Este algoritmo carga los nodos de un rbol binario en memoria.
NODO es una variable tipo puntero. La primero vez NODO es creado en el programa
principal}.
{ Las variables INFOR es tipo carcter y OTRO es tipo puntero}.

1. Leer informacin (INFO)


2. Hacer NODO^.INFO INFOR
3. Escribir Existe nodo a la izquierda
4. Leer Respuesta
5. Si respuesta es afirmativa
Entonces
CREA(OTRO) {crear nuevo nodo}
Hacer NODO^.IZQ OTRO
Regresar a CARGA con NODO^.IZQ
{Llamada recursiva}
si no
HACER NODO^.IZQ NIL
6. {Fin del condicional del paso 5 }
7. Escribir Existe nodo a la derecha
8. Leer Respuesta
9. Si respuesta es afirmativa
Entonces
CREA(OTRO) {crear nuevo nodo}
Hacer NODO^.DER OTRO
Regresar a CARGA con NODO^.DER
{Llamada recursiva}
si no
HACER NODO^.DER NIL

10. { Fin del condicional del paso 9

Ing. Henry J. Lezcano FISC-UTP-2016 5


Operaciones sobre los rboles Binarios
1. Recorrido sobre los rboles binarios
Una de las operaciones mas importantes a realizar sobre los arboles binarios son los
recorridos de los mismos. Recorrer significa visitar los nodos del rbol en forma
sistemtica; de manera que todos los nodos de la estructura sean visitados una sola
vez.
Existen tres formas diferentes de efectuar el recorrido y todas ellas de
naturaleza recursiva.
a. RECORRIDOS EN PREORDEN: consiste en visitar el nodo actual y despus
visitar el subrbol izquierdo y una vez visitado, visitar el subrbol derecho.

Procedimiento Preorden ( a: enlace); B


comenzar
Si (a <> nill) entonces
Visitar (a); E
F
Preorden (a ^.izq);
Preorden (a ^.der);
fin si; L Salida: B, E, L, F
fin;

Ing. Henry J. Lezcano FISC-UTP-2016 6


Operaciones sobre los rboles Binarios
1. Recorrido sobre los rboles binarios
Una de las operaciones mas importantes a realizar sobre los arboles binarios son los
recorridos de los mismos. Recorrer significa visitar los nodos del rbol en forma
sistemtica; de manera que todos los nodos de la estructura sean visitados una sola
vez.
Existen tres formas diferentes de efectuar el recorrido y todas ellas de
naturaleza recursiva.
b. RECORRIDOS EN INORDEN: consiste en visitar el subrbol izquierdo, el nodo
actual y despus se visita el subrbol derecho.

Procedimiento Inorden ( a: enlace); B


comenzar
Si (a <> nill) entonces
Inorden (a ^.izq); E
F
Visitar (a);
Inorden (a ^.der);
fin si; L Salida: L, E, B, F
fin;

Ing. Henry J. Lezcano FISC-UTP-2016 7


Operaciones sobre los rboles Binarios
1. Recorrido sobre los rboles binarios
Una de las operaciones mas importantes a realizar sobre los arboles binarios son los
recorridos de los mismos. Recorrer significa visitar los nodos del rbol en forma
sistemtica; de manera que todos los nodos de la estructura sean visitados una sola
vez.
Existen tres formas diferentes de efectuar el recorrido y todas ellas de
naturaleza recursiva.
c. RECORRIDOS EN POSTORDEN: consiste en visitar el subrbol izquierdo,
despus se visita el subrbol derecho y por ltimo nodo actual.

Procedimiento postorden ( a: enlace); B


comenzar
Si (a <> nill) entonces
postorden (a ^.izq); E
F
postorden (a ^.der);
Visitar (a);
fin si; L Salida: L, E, F, B
fin;

Ing. Henry J. Lezcano FISC-UTP-2016 8


EVALUACIN
Para el siguiente rbol binario realizar la operaciones de recorridos para las tres formas
PREORDEN, INORDEN, POSTORDEN
+

rbol Binario *
de Expresin
Algebraica
B / 3.5
A

C D
PREORDEN:____________________
INORDEN:______________________
POSTORDEN:____________________

Para el Lunes 11/04/2017 traer los 3 algoritmos de recorridos de forma iterativa.

Ing. Henry J. Lezcano FISC-UTP-2016 9


RBOLES BINARIOS DE BSQUEDA
El rbol binario de bsqueda es una estructura sobre la cul se pueden realizar
eficientemente las operaciones de bsqueda, insercin y eliminacin de nodos

90 Definicin General

Para todo nodo T del rbol


87 290 binario debe cumplirse, que
todos los valores de los nodos
76 del subrbol izquierdo del nodo
89 187 T deben ser menores o iguales
al valor del nodo T. De forma
similar que todos los valores de
54 82
154 los nodos del subrbol derecho
de nodo T debe ser mayores o
84 iguales al valor del nodo T
166

La estructura representada corresponde a un rbol binario de bsqueda segn la


definicin?

Ing. Henry J. Lezcano FISC-UTP-2016 10


RBOLES BINARIOS DE BSQUEDA
1. Bsqueda:
Buscar un elemento dentro de un rbol binario de bsqueda supone
simplemente mover un puntero por la rama izquierda o por la rama derecha
del rbol hasta encontrar el elemento

Para el algoritmo de bsqueda de un elemento se requiere la existencia del ABB, la


direccin de la raz, y le elemento a buscar en la estructura. Asignacin para Hoy!
Procedimiento Bsqueda (raz: enlace, elem: entero)

Algoritmo Para el Ejemplo:


raz = ^18
a elem = ^27
18
a Raz: corresponde al
8 21
a puntero donde inicia la
6 14 19 65 estructura.
a
13 27 72
Elem: corresponde al
elemento a buscar en el
rbol.

Ing. Henry J. Lezcano FISC-UTP-2016 11


RBOLES BINARIOS DE BSQUEDA
2. Insercin de un nodo:
La insercin es una operacin que se puede realizar eficientemente en una rbol
binario de bsqueda. La estructura crece conforme se insertan los elementos en
el rbol.
Construya un rbol binario de
Procedimiento :
bsqueda con las siguientes claves:
1. Debe compararse la clave a insertar con la 15, 20, 17, 9, 14, 64, 6, 72, 13, 26, 9
raz(T) del rbol. Si es mayor, debe avanzarse
por hacia el subrbol derecho. Si es menor,
15
debe avanzarse hacia el subrbol izquierdo.
2. Repetir sucesivamente el paso 1 hasta que 9 20
se cumpla con alguna con alguna de la
siguiente condiciones: 6 14 17 64

a. El subrbol derecho es igual a vaco o el 13 26 72


subrbol izquierdo es igual a vaco, en
cuyo caso se proceder a insertar el
elemento en el lugar que le corresponde.
Siempre que se inserta un nuevo valor al rbol
este quedar como una hoja por ello, siempre es
b. La clave se quiere insertar es igual a la
importante la distribucin de los elementos en la
raz(T) del rbol; en cuyo caso no se entrada ya que estos determinaran la forma del
realiza la insercin. rbol
12
Ing. Henry J. Lezcano FISC-UTP-2016
RBOLES BINARIOS DE BSQUEDA
3. Eliminacion de un nodo:
Al igual que la insercin suprimir un nodo es una operacin necesaria en el mantenimiento
de los rboles, pero resulta que esta operacin es mas complicada ya que es posible
eliminar cualquier nodo del rbol, por esto se presentan 3 casos:

a. Eliminacin de una hoja: es la operacin mas sencilla y consiste en poner nulo el


enlace correspondiente con su padre

Ejemplo: eliminar la clave 6 (hoja) Respuesta

18 18

8 21 8 21

6 14 19 65 14 19 65

13 27 72 13 27 72

13
Ing. Henry J. Lezcano FISC-UTP-2016
RBOLES BINARIOS DE BSQUEDA
3. Eliminacion de un nodo:
Al igual que la insercin suprimir un nodo es una operacin necesaria en el mantenimiento
de los rboles, pero resulta que esta operacin es mas complicada ya que es posible
eliminar cualquier nodo del rbol, por esto se presentan 3 casos:

b. Eliminacin de un nodo con un hijo: en este caso el padre del nodo a eliminar
deber apuntar al hijo del nodo que se eliminar.

Ejemplo: eliminar la clave 14 (padre Respuesta


con un hijo)
Padre del
Nodo a
eliminar 18 18

Nodo a
8 eliminar 21 8 21

6 14 19 65 6 13 19 65

13 27 72 27 72

Hijo del Nodo


a eliminar

14
Ing. Henry J. Lezcano FISC-UTP-2016
RBOLES BINARIOS DE BSQUEDA
3. Eliminacion de un nodo:
Al igual que la insercin suprimir un nodo es una operacin necesaria en el mantenimiento
de los rboles, pero resulta que esta operacin es mas complicada ya que es posible
eliminar cualquier nodo del rbol, por esto se presentan 3 casos:
c. Eliminacin de un nodo con dos hijos: en este caso el padre del nodo a eliminar no
podr apuntar a sus dos hijos, por lo cual es permitido realizar alguna de las siguientes
operaciones:
c.1 El nodo a eliminar deber ser sustituido por el nodo que se encuentra mas a
la izquierda en el subrbol derecho.
c.2 El nodo a eliminar deber ser sustituido por el nodo que se encuentra mas a
la derecha en el subrbol izquierdo.
Ejemplo: eliminar la clave 18 (nodo padre con 2 hijos) Respuesta Parcial
Padre con
2 hijos
18 14

8 21 8 21

6 14 19 65 14 19 65
6

13 27 72 13 Nodo 27 72
Nodo
encontrado
encontrado
Corresponde al movimiento de la informacin
15
Ing. Henry J. Lezcano FISC-UTP-2016
RBOLES BINARIOS DE BSQUEDA
3. Eliminacion de un nodo:
Al igual que la insercin suprimir un nodo es una operacin necesaria en el mantenimiento
de los rboles, pero resulta que esta operacin es mas complicada ya que es posible
eliminar cualquier nodo del rbol, por esto se presentan 3 casos:
c. Eliminacin de un nodo con dos hijos: en este caso el padre del nodo a eliminar no
podr apuntar a sus dos hijos, por lo cual es permitido realizar alguna de las siguientes
operaciones:
c.1 El nodo a eliminar deber ser sustituido por el nodo que se encuentra mas a
la izquierda en el subrbol derecho.
c.2 El nodo a eliminar deber ser sustituido por el nodo que se encuentra mas a
la derecha en el subrbol izquierdo.
Ejemplo: eliminar la clave 18 (nodo padre con 2 hijos) Respuesta Final

Padre del Nodo


14 14
a Eliminar
Nodo
8 encontrado 21 8 21

6 14 19 65 6 13 19 65

Hijo del Nodo 13 27 72 27 72


a Eliminar
Nodo encontrado = nodo a eliminar
16
Ing. Henry J. Lezcano FISC-UTP-2016
EVALUACION

Para las siguientes claves: 295, 170, 385, 195, 100, 200, 300, 325, 190, 178, 400
ejecute las siguientes tareas:

1. Construir el rbol binario de bsqueda.


2. Obtenga los tres recorridos del ABB.
3. Elimine las claves, 190, 400, 195 de forma secuencial.
4. Inserte las claves 159, 387 de forma secuencial

Ing. Henry J. Lezcano FISC-UTP-2016 17


ALGORITMO DE BUSQUEDA EN UN ABB

Procedimiento Bsqueda (Raiz: enlace, elem: entero)


a raz;
nodo elem;
buscar NO;
Mientras a <> nill and buscar = NO
Repetir
Si a.^info = nodo
Entonces
buscar = SI;
De otro modo
Si a.^info > nodo
Entonces
a a.^izq;
De otro modo
a a.^der

Si buscar = SI
Entonces
Message El nodo existe en el rbol ;
De otro modo
Message El nodo no existe en el rbol ;

Ing. Henry J. Lezcano FISC-UTP-2014 18


Representacin de un ABB en memoria mediantes listas enlazadas

Binario de busqueda en memoria


Para el siguiente rbol binario de bsqueda almacenado en una lista enlazada
llamada NODO realizar las siguientes operaciones: se usara DISP para indicar la
Representacin de un rbol
listado de nodos disponibles para las inserciones, al igual que las listas enlazadas
lineales se recomienda usar una variable NUEVO para ingreso de los nuevos
elementos a la estructura:
INFO IZQ DER
1 33 0 9 Construya la estructura
RAIZ = 3 como representacin de
2 25 8 10 grafos
DISP = 5 3 60 2 7
4 Insertar las claves 45,
66 0 0 80, 99, 10, 32
5 6
Eliminar 45, 66, 50, 75,
6 11 60
7 75 4 0
8 15 0 0
9 44 0 0
10 50 1 0
11 13
12 0
13 12

Ing. Henry J. Lezcano FISC-UTP-2014 19


Representacin de un ABB en memoria mediantes listas enlazadas
Binario de busqueda en memoria Para el siguiente rbol binario de bsqueda almacenado en una lista enlazada
Representacin de un rbol
llamada NODO realizar las siguientes operaciones:

EVALUACION

INFO IZQ DER


RAIZ = 9

DISP = 11 1 I 0 0 Eliminar las claves T


Insertar la clave R
2 G 4 5 Inserta la clave B
Eliminar la Clave M
3 T 0 0 Eliminar la clave S
4 A 0 0
5 H 0 6
6 J 1 0
7 P 0 0
8 V 3 0
9 M 2 10
10 S 7 8
11 0

Ing. Henry J. Lezcano FISC-UTP-2014 20


Representacin de un ABB en memoria mediantes listas enlazadas
Binario de busqueda en memoria Para el siguiente rbol binario de bsqueda almacenado en una lista enlazada
Representacin de un rbol
llamada NODO realizar las siguientes operaciones:

PROBLEMA ADICIONAL

RAIZ = 5
No. info izq der
DISP = 11
1 Brazil 3 2
2 Espana 8 nill
3 Austria 6 nill
4 Suiza 7 12
5 Inglaterra 1 4
6 alemania nill nill
7 Japon nill 9
8 China nill nill
9 Panama nill nill
10 nill nill
11 10 nill
12 Uruguay nill nill

Representar Grficamente el rbol


a) insertar los nodos mexico y canada
b) eliminar los nodos Panam, Alemania, Brasil

Ing. Henry J. Lezcano FISC-UTP-2014 21

You might also like