Está en la página 1de 19

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA


ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
ESTRUCTURA DE DATOS
Semana 12
ARBOLES GENERALES Y ARBOLES B
CONTENIDO
Arboles Generales
Características – operaciones – aplicaciones
Arboles de Búsqueda Binaria Equilibrados
Implementación de Arboles de Búsqueda Binaria mediantes arboles AVL
Arboles de Búsqueda Multivía
Arboles Digitales
Aplicaciones
Arboles Generales
Definición:
Un árbol general a veces se le conoce simplemente como árbol, se le define
como un conjunto finito no vacío T de elementos, llamados nodos tales que:
1.- T contiene un elemento distinguido R, llamado Raíz de T
2.- los restantes elementos de T forman una colección de cero o mas arboles.
Disjuntos T1, T2, . . . . , Tn
Los arboles T1, T2, . . . , Tn son llamados subárboles de la Raíz y las raíces
de T1, T2, . . . , se llaman sucesores de R.
La terminología vista para arboles binarios, también se aplica a arboles
generales. E n particular si N es un nodo con sucesores S1, S2, . . . , Sn, se
dice que N es el padre de los sucesores Si, los Si son hijos de N y los Si son
hermanos de unos y de otros.
La siguiente figura corresponde a un árbol general T con 13 nodos:
A, B, C, D, E, F, G, H, J, K, L, M, N

B C D

E F G H J K

L M N

En el Diagrama del árbol general T se observa que:


A es la raíz del árbol y los nodos hijos de un nodo están ordenados de izquierda
a derecha.
De este modo el nodo A tiene 3 hijos: B, C y D
El nodo C tiene 3 hijos
Cada uno de los nodos B y K tienen 2 hijos
Los nodos E, F, G, L, J, M y N no tienen hijos. Por lo tanto a estos nodos se les
llaman nodos terminales.

Diferencia entre un árbol Binario y un árbol General:


1.- Un árbol binario T puede estar vacío, pero un árbol general T es no vacío
2.- Supongamos que un nodo N tiene un solo hijo, entonces el hijo se distingue
por ser el IZQ o el DER en un árbol Binario T, mientras que en un árbol general
T, esta distinción no existe.

Teorema.
Si a y b son vértices diferentes de un árbol, entonces existe un único camino que
conecta estos vértices.
Definición: El TDA árbol de grado n , está formado por nodos con n números ,
cada uno de los cuales apuntador por un único nodo (llamado padre) y apunta
a un árbol de grado n(denominado subárbol).

Implementación de Arboles Generales:


La Representación de Arboles generales en memoria puede ser mediante:
- Arreglos unidimensionales
- Listas Enlazadas.

Implementación de un árbol general T mediante arreglos unidimensionales:


Si los nodos etiquetados con números enteros, entonces es fácil representarlo
mediante arreglos.
Sea el árbol general T siguiente:

2 3

4 5 9 10

6 7 8

A ( i ) contiene al nodo padre de i.


Ejemplo: A ( 4 ) = 2 es el padre del nodo 4.
A(i) 0 1 1 2 2 5 5 5 3 3
padre
de i
Nodo 1 2 3 4 5 6 7 8 9 10
i
Representación de un árbol general mediante Lista Enlazada
Sea el siguiente árbol general T

B C D

E F G H J K

L M N

El nodo se representa por:

INFO HIJO HERMANO

Donde cada nodo tiene:


INFO, HIJO ( o ABAJO ) y , HERMANO o HERM ( u HORIZ)
Y una variable puntero RAIZ.
Es decir dentro la Lista enlazada cada nodo de una posición K será
1.- INFO  K contiene los datos del nodo K
2.- HIJO  K contiene la posición del primer hijo de N
Si HIJO  K = NULL, indica que el nodo N no tiene hijos.
3.- HERM  K contiene la posición del siguiente hermano de N.
Si HERM  K = NULL, indica que es el último hijo de su padre
Nº INFO Nº HIJO HERM
1 1 5
2 A 2 3 0
3 B 3 15 4
4 C 4 6 16
5 5 13
6 G 6 0 7
7 H 7 11 8
8 J 8 0 0
9 N 9 0 0
10 M 10 0 9
11 L 11 0 0
12 K 12 10 0
13 13 0
14 F 14 0 0
15 E 15 0 14
16 D 16 12 0
RAIZ = 2 DISP =13
La Raíz del árbol T es A, se guarda en INFO 2  se hace RAIZ = 2
Como el primer hijo de A es el nodo B y se guarda en INFO 3  se hace
HIJO  2  = 3. Como A no tiene hermanos, se hace HERM 2  = NULL.
Como el primer hijo de B es el nodo E y se guarda en INFO15  se hace

HIJO  3  = 15. Como el nodo C es el siguiente hermano de B y C se guarda


en INFO 4 , se hace HERM  3  = 4.
Y así sucesivamente en el tabla de la derecha se dan los valores finales de
HIJO y HERM. Y que la lista de DISP se mantiene en la tabla de la izquierda
donde DISP = 1.
Representación de árboles generales mediante listas de hijos
Cuando los nodos están etiquetados con mayor información es conveniente
usar una estructura de lista en donde cada nodo es una estructura de la forma:
Registro nodo
Inicio
T valor
Nodo * sgte
Fin
Para este tipo de representación se tiene:
Raíz es arreglo de tamaño n
Raíz (i) es la cabeza de la lista que contiene hijos del nodo i
Este modelo presenta restricción que el número de nodos está limitado por el
tamaño del arreglo unidimensional o vector.
Ejemplo: Sea el árbol general t siguiente:

2 3

4 5 9 10

6 7 8

Luego la representación en memoria del árbol general mediante la lista de hijo

RAIZ LISTA DE HIJOS


1 2 3 X
2
3 4 5 X
4
5 9 10 X
6
7 6 7 X 8 X
8
9
10

El Pseudocodigo para realizar el recorrido es como sigue:

Accion Recorrido ( n )
Inicio
Para i desde 1 hasta n
n = raiz ( i )
Mientras (n < > NULL)
Escribir n  valor
N = n sgte
FinMientras
Fin
La siguiente Acción muestra cada nodo con sus hijos
Raiz ( i ) es la cabeza de la lista de los hijos del nodo i

1 Raiz ( 1 ) 2, 3
2 2 4, 5
3 3 9, 10
4 4 = NULL No tiene
5 5 6, 7, 8
6 6 = NULL No tiene
7 7 = NULL No tiene
8 8 = NULL No tiene
9 9 = NULL No tiene
10 10 = NULL No tiene

La acción recorre todo el vector RAIZ, aunque alguna raíz sea nula, es decir
que no tiene hijos, la solución es que el vector sea una lista enlazada que
contiene un nodo para cada nodo del árbol que no es hoja
Este modelo presenta restricción que el número de nodos está limitado por el
tamaño de vector.
RAIZ
1 2 3 X

2 4 5 X

3 9 10 X

5 6 7 8 X

Otra forma de implementar arboles generales es mediante Punteros a los hijos.


Es decir en cada nodo del árbol además de poner INFO poner apuntador a los
hijos, pero el número de hijos variable, no se conoce.

Esta forma no es muy eficiente porque requiere mucho espacio para los
apuntadores (estos no se utilizan por otro lado, se definen a priori una cantidad
de apuntadores para los posibles hijos
Ejemplo:
Se representa un problema cuando aparece el hijo n + 1, entonces ya no se
podría adicionar.

El Registro del nodo es como sigue:


Registro nodo
Inicio
Tipo valor
Nodo * hijo 1
Nodo * hijo 2
.
.
.
Nodo * hijo n
Fin de registro

La representación gráfica es la siguiente:

Inf

Inf

Hijo1
Inf

Hijo
2

Inf
.. . Hijo n
Otra Forma de representar un árbol general, mediante punteros:
- Puntero al Hijo
- Puntero al de más a la Izquierda
- Puntero al Hermano Derecho

INF del Nodo


Puntero al Hijo de mas a la Izquierda
Puntero al Hermano Derecho

Ejemplo: Sea el árbol General T :

O O O O

O O O O

O O
Representación de Arboles Generales:

B C

D E F G

VALOR DEL HIJO NODO SGTE


1 F X 1
2 2 7 5
3 B 2 3
CAB 4 E X 4 X
5 5 A 6 5 4 8
6 G X 6 3 7
7 D X 7 8 X
8 C 9 8 1 X
9 9 6 X

La variable CAB a punta a la raíz del árbol Valor ( i)


Hijo ( i ) apunta a la posición del nodo Hijo ( i) donde se encuentra la
dirección del Hijo de más a la Izquierda.
Sgte ( i ) apunta a la posición del nodo ( i ) donde se encuentra la dirección del
Hermano Derecho
Mediante el Hijo de más a la Izquierda y del hermano Derecho
Nº HI VALOR HD
1 0 F 0
2
3 7 B 8
4 0 E 1
5 3 A 0
6 0 G 0
7 0 D 4
8 6 C 0
9

Donde:
HI = Hijo Izquierdo
Nodo = valor del Nodo o INFO
HD = hermano Derecho
La variable Global Raíz o CAB apunta al Hijo Izquierdo del nodo i
HI ( i ) = apunta al Hijo de más a la izquierda del nodo i
HD ( i ) = apunta al Hermano Derecho del nodo i.

Otra Forma de representar un árbol general, mediante punteros:


1.- Puntero al de más a la Izquierda
2.-Puntero al Hermano Derecho
3.- Puntero al padre

Puntero al padre (Puntero 3)

INFO

Puntero al Hijo Puntero al Hermano Derecho


más a la IZQ (Puntero 2)
(Puntero 1)
1

2 3 4

5 6

7 8

2 3 4

5 6

7 8
Otra forma de representar con Listas Enlazadas Circulares
Resultan los arboles con enlace en anillo
El anillo se forma con los hermanos mediante una Lista circular , cada nodo
mantiene su nodo padre para facilitar el regreso al nodo padre.

2 3 4

5 6

7 8

Cada nodo tiene un puntero al hijo de más a la izquierda y uno al Hermano


derecho y otro al padre (es decir un enlace triple
El último de los hijos no tiene hermano derecho
Por lo tanto apunta al nulo, por un puntero al primero de los hermanos,
entonces esto es una lista circular como la siguiente:

2 3 4

Se observa en el grafico que los hermanos forman un anillo.


RECORRIDO EN ARBOLES GENERALES:
Sea el árbol con Raíz y los Subárboles A1, A2, . . . , An los algoritmos de tales
recorridos son recursivos y dependen de la estructura de los datos. A utilizarse.

RAIZ

A1 A2 ... An

Existen 3 Órdenes en los Recorridos:


Orden Previo
Orden Simétrico
Orden Posterior
Recorrido en orden previo:
Recorrido en Orden Previo Accion Orden Previo (n)
Procesar Raiz inicio
Recorre los nodos de A1 en orden previo Listar n
Recorre los nodos de A2 en orden previo Para cada hijo h de
n
. De IZQ a DER en
. Orden Previo (h)
. Fin Para
Recorre los nodos de An en orden previo Fin
Ejemplo Sea el árbol General T, realizar el recorrido en Orden Previo
1

2 3

4 5 6 7 8

9 10 11 12 13 14

15 16 17

El Recorrido en Orden Previo se puede representar en Memoria mediante


Arreglos Lineales:
1 2 4 9 10 11 5 6 12 15 13 16 3 7 14 17 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Recorrido en Orden Simetrico:


Recorrido en Orden Simetrico Accion Orden
Simetrico(n)
Recorre los nodos de A1 en orden simétrico inicio
Procesar Raiz Si (n es hoja)//no hay
descendencia
Recorre los nodos de A2 en orden simétrico Listar n
Recorre los nodos de A3 en orden simetrico sino
. h=hijo de más a la
IZQ de n
. Orden Simetrico (h)
. Para cada hijo de n
Excepto el de
mas a la IZQ
Orden Simetrico (h)
Fin Para
Recorre los nodos de An en orden simetrico Finsi
Fin
Ejemplo Sea el árbol General T, realizar el recorrido en Orden Simetrico
1

2 3

4 5 6 7 8

9 10 11 12 13 14

15 16 17

El Recorrido en Orden Simétrico se puede representar en Memoria mediante


Arreglos Lineales:
9 4 10 11 2 5 15 12 6 16 13 1 17 14 7 3 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Recorrido en Orden Posterior:

Recorrido en Orden Posterior Accion Orden Posterior(n)


Recorre los nodos de A1 en orden posterior inicio
Si (n es hoja)//no hay
descendencia
Recorre los nodos de A2 en orden posterior Listar n
Recorre los nodos de A3 en orden posterior sino
. h=hijo de más a la
IZQ de n
. Orden Posterior (h)
. Para cada hijo de n
Excepto el de
mas a la IZQ

Orden Posterior (h)


Fin Para
Recorre los nodos de An en orden previo Finsi
Recorre la Raiz Fin
Ejemplo Sea el árbol General T, realizar el recorrido en Orden Posterior
1

2 3

4 5 6 7 8

9 10 11 12 13 14

15 16 17

El Recorrido en Orden Posterior se puede representar en Memoria mediante


Arreglos Lineales:
9 10 11 4 5 15 12 16 13 6 2 17 14 7 8 3 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ARBOLES BALANCEADOS
ARBOLES DE BUSQUEDA EQUILIBRADOS
ARBOLES AVL
ARBOLES B
ARBOLES MULTIVIA o MULTICAMINO
Árboles multicamino
Árboles B
Árboles B Binarios (árboles BB)
Árboles B Binarios Simétricos (árbol BBS)
Definición:
Se denominan árboles multicamino a aquellos árboles de grado mayor que dos.
- Árbol que contiene nodos con más de dos ramas.
Aplicaciones:
Muy utilizados en la construcción y mantenimiento de árboles de búsqueda con
Gran cantidad de nodos
Guardados en memoria secundaria.
En los que se realizan con frecuencia inserciones y supresiones.
Idea básica:
Un árbol se subdivide en subárboles
Cada subárbol se representa como unidades a las que se accede
simultáneamente y reciben el nombre de páginas
Cada acceso a página requiere un único acceso a memoria secundaria.
Se aprovecha las características de direccionamiento mediante paginación de
la memoria secundaria, se consigue un ahorro en el número de accesos a la
misma.
Problemas:
(1) ¿De cuántos nodos máximos considero cada página?
(2) Es necesario establecer un plan de crecimiento controlado del árbol
(Mínima profundidad) para evitar que este crezca aleatoriamente (podría, en el
peor de los casos, haber un nodo por página)
Solución: Árboles B multicamino o, simple Arbol B
ARBOLES B
Definición
Un árbol B de orden n es aquel árbol de búsqueda que satisface las siguientes
propiedades:
1. Cada página contiene máximo 2n llaves y mínimo n
llaves, excepto la raíz (que puede contener sólo una).
2. Cada página o bien es una página hoja (no tiene descendientes) o bien
tiene m+1 páginas descendientes, siendo m el nº de llaves en esta página.
3. Todas las páginas hoja aparecen al mismo nivel

Ejemplo de árbol B de orden 2

4
5

15 28 55 70

2 6 6 9 16 17 21 23 32 44 46 49 52 5 65 68 68 7 8 87 9
7 1 2 8

Satisface las condiciones de árbol de búsqueda.


Cada página contiene como máximo 2x2 = 4 llaves, y como mínimo 2 llaves,
excepto la raíz que almacena una sola.
Todas las páginas de hoja están en el mismo nivel, el nivel 3, y las que no
son de hoja tienen m+1 descendientes.
Así la raíz con una sola llave (m=1) apunta a dos páginas, y en el segundo
nivel, las páginas contienen dos llaves (m=2) y por tanto tienen tres
descendientes.

También podría gustarte