Está en la página 1de 26

INSTITUTO SUPERIOR TECNOLGICO

EUROAMERICANO

GUA DIDCTICA DE LA MATERIA DE


ESTRUCTURA DE DATOS II

DE LA CARRERA DE:

INFORMTICA NETWORKING
RECOPILADO POR:
DOCENTE: ING. DANNY AVILEZ C.

12 MAYO 2014

Contenido
INTRODUCCIN..........................................................................................................................................................................1
ESTRUCTURA DE DATOS FUNDAMENTALES ...................................................................................................................2
CLASIFICACIN DE ESTRUCTURAS DE DATOS ...............................................................................................................2
ESTRUCTURAS LGICAS DE DATOS...............................................................................................................................2
ESTRUCTURAS PRIMITIVAS Y SIMPLES (TIPOS DE DATOS PRIMITIVOS) ..........................................................3
TIPOS DE DATOS PRIMITIVAS ...........................................................................................................................................3
*ENTEROS ...........................................................................................................................................................................3
*BOOLEANO .......................................................................................................................................................................3
*CARACTERES........................................................................................................................................................................4
*CADENA.............................................................................................................................................................................4
ESTRUCTURAS DE ARREGLO ............................................................................................................................................5
ARREGLOS UNIDIMENSIONALES.....................................................................................................................................6
ARREGLOS MULTIDIMENSIONALES...............................................................................................................................6
ESTRUCTURAS DE REGISTRO ...........................................................................................................................................7
FORMACION DE REGISTROS..............................................................................................................................................7
LLAVES DE IDENTIFICACIN............................................................................................................................................8
ARCHIVOS................................................................................................................................................................................8
ARREGLOS ...............................................................................................................................................................................9
PUNTEROS Y VARIABLES DE REFERENCIA................................................................................................................10
LISTAS ENLAZADAS...........................................................................................................................................................11
RBOLES ................................................................................................................................................................................16
RBOLES BINARIOS ...........................................................................................................................................................18
PROPIEDADES DE LOS RBOLES BINARIOS ..............................................................................................................20
RECORRIDOS DE RBOLES BINARIOS .........................................................................................................................22

2014

INTRODUCCIN
Como ya sabemos, las computadoras fueron diseadas o ideadas como una herramienta mediante la
cual podemos realizar operaciones de clculo complicadas en un lapso de mnimo tiempo. Pero la
mayora de las aplicaciones de este fantstico invento del hombre, son las de almacenamiento y acceso
de grandes cantidades de informacin.
La informacin que se procesa en la computadora es un conjunto de datos, que pueden ser simples o
estructurados. Los datos simples son aquellos que ocupan slo una localidad de memoria, mientras que
los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un
identificador nico.
Debido a que por lo general tenemos que tratar con conjuntos de datos y no con datos simples
(enteros, reales, booleanos, etc.) que por s solos no nos dicen nada, ni nos sirven de mucho, es
necesario tratar con estructuras de datos adecuadas a cada necesidad.
Las estructuras de datos son una coleccin de datos cuya organizacin se caracteriza por las funciones
de acceso que se usan para almacenar y acceder a elementos individuales de datos.
Una estructura de datos se caracteriza por lo siguiente:

Pueden descomponerse en los elementos que la forman.

La manera en que se colocan los elementos dentro de la estructura afectar la forma en que
se realicen los accesos a cada elemento.

La colocacin de los elementos y la manera en que se accede a ellos puede ser encapsulada.

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

ESTRUCTURA DE DATOS FUNDAMENTALES


Tipo de datos Concepto propio de la informtica, ms especficamente de los lenguajes de
programacin, aunque tambin se encuentra relacionado con nociones similares de las matemticas y
la lgica.
Estructura de datos Es una clase de datos que se puede caracterizar por su organizacin y
operaciones definidas sobre ella. Algunas veces a estas estructuras se les llama tipos de datos.
Estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental
es la mnima informacin que se tiene en el sistema) con el objetivo de facilitar la manipulacin de
estos datos como un todo o individualmente.
Una estructura de datos define la organizacin e inter relacionamiento de estos, y un conjunto de
operaciones que se pueden realizar sobre l. Las operaciones bsicas son:

adicionar un nuevo valor a la estructura.

borrar un valor de la estructura.

Bsqueda, encontrar un determinado valor en la estructura para realizar una operacin con
este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estn
ordenados).

CLASIFICACIN DE ESTRUCTURAS DE DATOS


ESTRUCTURAS LGICAS DE DATOS

Las estructuras de datos son muy importantes en sistemas computacionales. En un programa, cada
variable pertenece a alguna estructura de datos explcita o implcitamente definida, la cual determina el
conjunto de operaciones vlidas para ella. Cada estructura de datos lgica puede tener varias
representaciones fsicas diferentes para sus almacenamientos posibles.

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

ESTRUCTURAS PRIMITIVAS Y SIMPLES (TIPOS DE DATOS PRIMITIVOS)

Las estructura de datos primitivas, son las que no estn compuestas por otras estructuras de datos.
Ejemplo: los tipos de datos: enteros, booleanos y caracteres.
Otras estructuras de datos se pueden construir de una o ms primitivas cmo son las estructuras de
datos simples que se construyen a partir de estructuras primitvas y son: cadenas, arreglos y registros. A
estas estructuras de datos la respaldan muchos lenguajes de programacin.
Tipos de datos simples: Es uno de los conceptos fundamentales de cualquier lenguaje de
programacin. Estos definen los mtodos de almacenamiento (cadenas, arreglos y registros)
disponibles para representar informacin, junto con la manera en que dicha informacin ha de ser
interpretada.
Para crear una variable (de un tipo simple primivito) en memoria debe declararse indicando su tipo de
variable y su identificador que la identificar de forma nica.
TIPOS DE DATOS PRIMITIVAS

En todos los lenguajes de programacin se manejan datos primitivas. Los tipos de datos primitivas son
los siguientes:
*ENTEROS
Es un miembro del siguiente conjunto de nmeros:
N+1, -n,-2,-1,0,1,2,N+1
Las operaciones fundamentales sobre enteros, son muy conocidas: suma, resta, multiplicacin, divisin,
exponenciacin y otras. Todas estas operaciones trabajan sobre un par de nmeros, considerados como
operadores binarios. Un operador unario tiene slo un operando. La negacin, que cambia el signo de un
nmero, es un ejemplo de un operador unario.
*BOOLEANO
Tambin se le llama lgico. Es un elemento que puede tener uno de dos valores: verdadero o falso. El
conjunto de operaciones definidas sobre este tipo de estructuras de datos es diferente del conjunto de operaciones
3

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

para los enteros. Los tres operadores bolanos bsicos son not, and y or (negacin, conjuncin y disyuncin,
respectivamente). La siguiente tabla muestra el resultado de aplicar cada uno de estos operadores para cada valor
booleano.

Valor del primer


operando
Verdadero
Verdadero
Falso
Falso

Valor del
segundo
operando
verdadero
falso
verdadero
falso

Operador
and

or

not

V
F
F
F

V
V
V
F

F
F
V
V

AND, el resultado es verdadero si los dos son verdadero. Si uno es falso el resultado es
falso.

OR, el resultado es verdadero si uno de los dos son verdaderos, si los dos son falsos el
resultado es falso.

NOT, el resultado es verdadero cuando el primero es falso y el segundo verdadero. Si el


primero es verdadero y el segundo es falso el resultado es falso.
*CARACTERES.

El carcter es una tercera primitiva, es un elemento tomado de un conjunto de smbolos. Ejemplo

{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E.,X,Y,Z,,$%?,..*,+,/,,-}
Se incluyen dgitos, caracteres del alfabeto y caracteres especiales.
*CADENA
Es la que se construye de datos primitvas:

Es una secuencia finita de smbolos tomados de un conjunto de caracteres. El conjunto de caracteres


que se emplea para generar cadenas se llama alfabeto. El conjunto de cadenas que se puede derivar del
alfabeto A={C,D,1} incluye los siguientes: CD1, CD, DDC, 1D111, y as sucesivamente,
incluyendo la cadena nula o vaca. Por lo general, el inicio y final de una cadena lo delimitamos con
comillas.

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Las cadenas son un tipo importante de dato y se usan ampliamente. En primera instancia, las cadenas
son el medio bsico para escribir programas y transmitirlos a la computadora. Segundo, son el medio
principal de intercambio de informacin con los usuarios. Tercero, las cadenas se usan para almacenas
informacin en archivos. Cuarto se usan en lenguajes de programacin para nombres de variables,
etiquetas y procedimientos. Y en un contexto ms general, son una va de comunicacin entre los seres
humanos.
Definamos de manera ms formal a S como cadena:
S:=a,b,c
Cada cadena tiene un atributo llamado longitud, el cual es el nmero de caracteres en la cadena.
ESTRUCTURAS DE ARREGLO

Los arreglos son bloques bsicos para la construccin de estructuras de datos ms complejas. Casi
todas las estructuras complejas se pueden representar indirectamente mediante arreglos.
Un arreglo es un conjunto finito ordenado de elementos homogneos, porque todos son del mismo
tipo de dato. Un arreglo puede ser un conjunto de tipo cadena en tanto que otro puede ser de tipo
entero. A los arreglo se les llama por lo general tabla.
Arreglo Estructura de datos en la que a cada elemento se le asigna un ndice nico. Su representacin
matemtica es una matriz. Un array (ms correctamente denominado vector), es un conjunto de
variables o registros del mismo tipo que puede estar almacenados en memoria principal o en memoria
auxiliar. Los array de 1 dimensin se denominan vectores, los de 2 o ms dimensiones se denominan
matrices. La forma de acceder a los elementos del array es directo, es decir que el elemento deseado es
obtenido a partir de su ndice.

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

ARREGLOS UNIDIMENSIONALES

Son conocidos como vector. Un arreglo unidimensional llamado VICTOR, el cual consiste de N
elementos se puede representar
VICTOR(1)
VICTOR (2)
Subndices

VICTOR(I)

..

VICTOR (N)

Los subndices o ndices de un elemento designan su posicin en el arreglo; en la notacin que se


emplea aqu, un elemento en particular se define con el nombre del arreglo, seguido por el subndice
del elemento entre parntesis, es decir, VICTOR(I). Otras posibilidades para designar al elemento del
arreglo VICTOR con subndice son: VICTO[I], VICTORI, VICTORI.
ARREGLOS MULTIDIMENSIONALES

Un arreglo de dos dimensiones, es un arreglo en el cual cada elemento es otro arreglo. Un arreglo
llamado B, el cual consiste de M elementos, cada uno de los cuales es un arreglo de N elementos se
puede representar como una tabla de M por N, como se muestra a continuacin:
Ejemplo de un arreglo M por N
1 2 .. .. .. N
2
..
M
Es necesario especificar dos subndices para identificar un elemento individual en un arreglo
bidimensional. Por convencin, el primer subndice hace referencia al rengln.
Elemento B(I,J) en un arreglo
1 2 .. J
.. N
2

I
B(I,J)

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Un arreglo se puede definir como un arreglo tridimensional, cuadrimensional, N-dimensional. Los


conceptos de sundices, rango y nmero de elementos se pueden extender directamente de una y dos
dimensiones a arreglos de orden mayor. En general un arreglo N-dimensional requiere que los valores
de los N subndices se especifiquen para identificar un elemento en particular del arreglo.

En programacin, un vector, array, arreglo o alineacin es un conjunto o agrupacin de variables del


mismo tipo cuyo acceso se realiza por ndices. Los vectores o arrays de dos o ms dimensiones se
denominan matrices, que pueden tener tantas dimensiones como se desee; aunque lo correcto es
llamarlo arreglo (de memoria) ya que una variable de ms de dos dimensiones, no cumple con las
caractersticas matemticas de una matriz numrica.
ESTRUCTURAS DE REGISTRO

Los registros son los componentes bsicos de los archivos y de las bases de datos. Un registro es una
coleccin finita y ordenada de elementos, posiblemente heterogneos, que se tratan como una unidad.
Un registro se distingue de un arreglo en el hecho de que todos los elementos de un arreglo deben
tener la misma estructura, a diferencia de los elementos componentes del registro que pueden tener
diferentes estructuras de datos. Un registro se menciona algunas veces slo como una estructura. Los
elementos de un registro son comnmente llamados campos. Un campo es un rea especfica de un
registro utilizada para una clase particular de informacin.

FORMACION DE REGISTROS

Una unidad de informacin deriva, por lo menos, algo de su significado; a partir de sus relaciones con
otra informacin. La estructura de datos registro permite que un conjunto de elementos de
informacin, lgicamente relacionados, se pueda agrupar explcitamente. Por ejemplo, el campo de
tipo cadena llamado TITULO-DE-TAREA, con valor ANALISTA, no proporciona mucha
informacin por s mismo. Sin embargo, se proporciona ms informacin cuando el campo TITULO7

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

DE-TAREA se acopla con otros campos lgicamente relacionados, como NUM-EMPLEADO, de tipo
cadena con valor 123456789 y TARIFA-PAGO, de tipo decimal con valor 15.93. Estos elementos
heterogneos no pueden constituir un arreglo porque son diferentes estructuras de datos. Sin embargo,
se pueden agrupar para constituir un registro de informacin del empleado como se muestra a
continuacin:
TITULO-DE-TAREA
ANALISTA

NM-EMPLEADO
123456789

TARIFA-PAGO
15.93

LLAVES DE IDENTIFICACIN

Un registro, por lo general, contiene un campo que lo identifica. Un empleado se identifica por
ejemplo con su nmero de empleado. El campo que identifica el registro se llama campo llave. La
llave de un registro puede ser un elemento bsico o bien uno grupal. Por ejemplo un registro de la
clase particular CURSO puede identificarse por el valor de sus campos DEPARTAMENTO,
NUMERO Y SECCIN.
ARCHIVOS

Se llama archivo a una coleccin de ocurrencias de registros lgicamente relacionados que se tratan
como una unidad.
Toda la informacin que se maneja dentro de un computador se encuentra almacenada en su memoria,
que en trminos simples es una secuencia de caracteres (bytes) en donde se encuentran las
instrucciones y datos a los que se accede directamente a travs del procesador del computador.
Los sistemas o mtodos de organizacin de datos que permiten un almacenamiento eficiente de la
informacin en la memoria del computador son conocidos como estructuras de datos. Estos mtodos
de organizacin constituyen las piezas bsicas para la construccin de algoritmos complejos, y
permiten implementarlos de manera eficiente.
En el presente captulo se presentan las estructuras de datos bsicas como son arreglos, listas enlazadas
y rboles, con las cuales se implementarn posteriormente los tipos de datos abstractos.

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

ARREGLOS

Un arreglo es una secuencia contigua de un nmero fijo de elementos homogneos. En la siguiente


figura se muestra un arreglo de enteros con 10 elementos:

En Java un arreglo se define como:


tipo[] nombre = new tipo[n_elem];
donde tipo corresponde al tipo de los elementos que contendr el arreglo (enteros, reales, caracteres,
etc..), nombre corresponde al nombre con el cual se denominar el arreglo, y n_elemcorresponde al
nmero de elementos que tendr el arreglo. Para el caso del ejemplo presentado, la declaracin del
arreglo de enteros es:
int[] arreglo = new int[10];
Para acceder a un elemento del arreglo se utiliza un ndice que identifica a cada elemento de manera
nica. Los ndices en Java son nmeros enteros correlativos y comienzan desde cero, por lo tanto, si el
arreglo contiene n_elem elementos el ndice del ltimo elemento del arreglo es n_elem-1. El siguiente
cdigo muestra como se puede inicializar el arreglo del ejemplo, luego de ser declarado:
arreglo[0]=80; //el primer indice de los arreglos en Java es 0
arreglo[1]=45;
arreglo[2]=2;
arreglo[3]=21;
arreglo[4]=92;
arreglo[5]=17;
9

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

arreglo[6]=5;
arreglo[7]=65;
arreglo[8]=14;
arreglo[9]=34; //el ultimo indice del arreglo es 10-1 = 9
Tambin se puede declarar e inicializar el arreglo en una sola lnea:
int[] arreglo={80, 45, 2, 21, 92, 17, 5, 65, 14, 34};
Una ventaja que tienen los arreglos es que el costo de acceso de un elemento del arreglo es constante,
es decir no hay diferencias de costo entre accesar el primer, el ltimo o cualquier elemento del arreglo,
lo cual es muy eficiente. La desventaja es que es necesario definir a priori el tamao del arreglo, lo
cual puede generar mucha prdida de espacio en memoria si se definen arreglos muy grandes para
contener conjuntos pequeos de elementos (Nota: en Java es posible hacer crecer el tamao de un
arreglo de manera dinmica).
PUNTEROS Y VARIABLES DE REFERENCIA

Un puntero es una variable que almacena la direccin de memoria de otra variable, es decir, almacena
el valor del lugar fsico en la memoria en donde se encuentra almacenada dicha variable. Si se imagina
que la memoria del computador es un gran arreglo de bytes, la direccin de memoria correspondera al
ndice de los casilleros de dicho arreglo, que es precisamente lo que se almacena en el puntero.
En algunos lenguajes de programacin, por ejemplo C, es posible declarar explcitamente punteros
para distintos tipos de variables, e incluso es posible realizar aritmtica de punteros para realizar
operaciones de manera muy eficiente, a cambio de "oscurecer" el cdigo del programa y con una alta
probabilidad de cometer errores de programacin dficiles de detectar.
En Java no se puede declarar punteros de manera explcita ni tampoco realizar aritmtica de punteros.
Por lo tanto es imposible en Java tener un puntero a cualquiera de los tipos primitivos: enteros, reales,
caracteres y booleanos. Los strings y arreglos no son tipos primitivos en Java.
10

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Una variable de referencia, o simplemente una referencia, es una variable que almacena la direccin
de memoria en donde se ubica un objeto. Ntese que si bien la definicin es prcticamente idntica a
la de puntero, la diferencia radica en que una referencia slo puede apuntar a objetos residentes en
memoria, lo cual excluye a los tipos primitivos. A partir de esta definicin se puede concluir que toda
variable en Java, que no sea de tipo primitivo, es una referencia.
Por ejemplo, todas las clases en Java heredan de la clase Object. Una instancia de sta clase se declara
como:
Object aux=new Object();
La variable aux es una referencia a un objeto de la clase Object que permite saber la ubicacin de
dicho objeto dentro de la memoria, informacin suficiente para poder operar con l. Intuitivamente, la
referencia es como una "flecha" que nos indica la posicin del objeto que apunta:

LISTAS ENLAZADAS

Una lista enlazada es una serie de nodos, conectados entre s a travs de una referencia, en donde se
almacena la informacin de los elementos de la lista. Por lo tanto, los nodos de una lista enlazada se
componen de dos partes principales:

class NodoLista
{
11

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Object elemento;
NodoLista siguiente;
}
La referencia contenida en el nodo de una lista se denomina siguiente, pues indica en dnde se
encuentra el siguiente elemento de la lista. El ltimo elemento de la lista no tiene nodo siguiente, por
lo que se dice que la referencia siguiente del ltimo elemento es null (nula).
La siguiente figura muestra un ejemplo de una lista enlazada cuyos elementos son strings:

La referencia lista indica la posicin del primer elemento de la lista y permite acceder a todos los
elementos de sta: basta con seguir las referencias al nodo siguiente para recorrer la lista.
NodoLista aux=lista;

aux=aux.siguiente;

12

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Siguiendo con el ejemplo anterior, para insertar un nuevo nodo justo delante del nodo referenciado
por aux se deben modificar las referencias siguiente del nodo aux y del nodo a insertar.

NodoLista nuevo=new NodoLista(...);


//"nuevo" es la referencia del nodo a insertar en la lista
nuevo.siguiente=aux.siguiente;
aux.siguiente=nuevo;
//Notese que no es lo mismo realizar los cambios de referencia
//en un orden distinto al presentado, puesto que en ese caso
//se "pierde" la lista desde el nodo siguiente a aux
El procedimiento presentado a continuacin es un ejemplo de cmo se programa el recorrido de una
lista enlazada. Se supondr que los objetos almacenados en cada nodo son strings:
void recorrido(NodoLista lista)
{
NodoLista aux=lista;
13

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

while (aux!=null)
{
System.out.println(aux.elemento);
aux=aux.siguiente;
}
}
Para invertir el orden de la lista, es decir, que el ltimo elemento de la lista ahora sea el primero, que
el penltimo elemento de la lista ahora sea el segundo, etc..., modificando slo las referencias y no el
contenido de los nodos, es necesario realizar una sola pasada por la lista, y en cada nodo visitado se
modifica la referencia siguiente para que apunte al nodo anterior. Es necesario mantener referencias
auxiliares para acordarse en donde se encuentra el nodo anterior y el resto de la lista que an no ha
sido modificada:
void invertir(NodoLista lista)
{
NodoLista siguiente=lista;
NodoLista anterior=null;
while(lista!=null)
{
siguiente=lista.siguiente;
lista.siguiente=anterior;
anterior=lista;
14

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

lista=siguiente;
}
}
La implementacin vista de los nodos tambin se conoce como lista de enlace simple, dado que
slo contiene una referencia al nodo siguiente y por lo tanto slo puede recorrerse en un solo sentido.
En una lista de doble enlace se agrega una segunda referencia al nodo previo, lo que permite recorrer
la lista en ambos sentidos, y en general se implementa con una referencia al primer elemento y otra
referencia al ltimo elemento.

Una lista circular es aquella en donde la referencia siguiente del ltimo nodo en vez de
ser null apunta al primer nodo de la lista. El concepto se aplica tanto a listas de enlace simple como
doblemente enlazadas.

En muchas aplicaciones que utilizan listas enlazadas es til contar con un nodo cabecera,
tambien conocido como dummy o header, que es un nodo "falso", ya que no contiene informacin
relevante, y su referencia siguiente apunta al primer elemento de la lista. Al utilizar un nodo cabecera
siempre es posible definir un nodo previo a cualquier nodo de la lista, definiendo que el previo al
primer elemento es la cabecera.
15

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Si se utiliza un nodo cabecera en una lista de doble enlace ya no es necesario contar con las
referencias primero y ltimo, puesto que el nodo cabecera tiene ambas referencias: su
referenciasiguiente es el primer elemento de la lista, y su referencia anterior es el ltimo elemento de
la lista. De esta forma la lista de doble enlace queda circular de una manera natural.

RBOLES

Un rbol se define como una coleccin de nodos organizados en forma recursiva. Cuando hay 0
nodos se dice que el rbol esta vaco, en caso contrario el rbol consiste en un nodo denominado raz,
el cual tiene 0 o ms referencias a otros rboles, conocidos como subrboles. Las races de los
subrboles se denominan hijos de la raz, y consecuentemente la raz se denomina padre de las races
de sus subrboles. Una visin grfica de esta definicin recursiva se muestra en la siguiente figura:

16

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Los nodos que no poseen hijos se denominan hojas. Dos nodos que tienen el padre en comn se
denominan hermanos.
Un camino entre un nodo n1 y un nodo nk est definido como la secuencia de nodos n1, n2,
..., nk tal que ni es padre de ni+1, 1 <= i < k. El largo del camino es el nmero de referencias que
componen el camino, que para el ejemplo son k-1. Existe un camino desde cada nodo del rbol a s
mismo y es de largo 0. Ntese que en un rbol existe un nico camino desde la raz hasta cualquier
otro nodo del rbol. A partir del concepto de camino se definen los conceptos
de ancestro y descendiente: un nodo n es ancestro de un nodo m si existe un camino desde n a m; un
nodo n es descendiente de un nodo m si existe un camino desde m a n.
Se define la profundidad del nodo nk como el largo del camino entre la raz del arbol y el
nodo nk. Esto implica que la profundidad de la raz es siempre 0. La altura de un nodo nk es el mximo
largo de camino desde nk hasta alguna hoja. Esto implica que la altura de toda hoja es 0. La altura de
un rbol es igual a la altura de la raz, y tiene el mismo valor que la profundidad de la hoja ms
profunda. La altura de un rbol vaco se define como -1.
La siguiente figura muestra un ejemplo de los conceptos previamente descritos:

17

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

A es la raz del rbol.


A es padre de B, C y D.
E y F son hermanos, puesto que ambos son hijos de B.
E, J, K, L, C, P, Q, H, N y O son las hojas del rbol.
El camino desde A a J es nico, lo conforman los nodos A-B-F-J y es de largo 3.
D es ancestro de P, y por lo tanto P es descendiente de D.
L no es descendiente de C, puesto que no existe un camino desde C a L.
La profundidad de C es 1, de F es 2 y de Q es 4.
La altura de C es 0, de F es 1 y de D es 3.
La altura del rbol es 4 (largo del camino entre la raz A y la hoja ms profunda, P o Q).
RBOLES BINARIOS

Un rbol binario es un rbol en donde cada nodo posee 2 referencias a subrboles (ni ms, ni
menos). En general, dichas referencias se denominan izquierda y derecha, y consecuentemente se
define el subrbol izquierdo y subrbol derecho del arbol.
18

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

En este caso, la implementacion del nodo de un rbol binario es como sigue:


class NodoArbolBinario
{
Object elemento;
NodoArbolBinario izq;
NodoArbolBinario der;
}
Los nodos en s que conforman un rbol binario se denominan nodos internos, y todas las
referencias que son null se denominan nodos externos.

19

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

PROPIEDADES DE LOS RBOLES BINARIOS

Propiedad 1:
Si se define i = nmero de nodos internos, e = nmero de nodos externos, entonces se tiene
que:
e = i+1
Demostracin: induccin sobre i (ejercicio).
Propiedad 2:
Sea n = nmero de nodos internos. Se define:
In = suma del largo de los caminos desde la raz a cada nodo interno (largo de caminos internos).
En = suma del largo de los caminos desde la raz a cada nodo externo (largo de caminos
externos).
Se tiene que:
En = In+2n
Demostracin: induccin sobre n (ejercicio).
20

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Propiedad 3:
Cuntos rboles binarios distintos se pueden construir con n nodos internos?
n

bn

bn?

Por ejemplo: b4 = b0*b3 + b1*b2 + b2*b1 + b3*b0 = 5 + 2 + 2 + 5 = 14.


Este tipo de ecuaciones se puede resolver y la solucin es la siguiente:

La serie de numeros que genera bn se conoce como nmeros de Catalan. Asintticamente:

Ejemplo: rboles de expresiones matemticas


La siguiente figura muestra un ejemplo de un rbol de expresiones matemticas. En un rbol de
expresiones las hojas corresponden a los operandos de la expresin (variables o constantes), mientras
21

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

que los nodos restantes contienen operadores. Dado que los operadores matemticos son binarios (o
unarios como en el caso del operador signo -), un rbol de expresiones resulta ser un rbol binario.

Un rbol de expresiones se puede evaluar de la siguiente forma:


Si la raz del rbol es una constante o una variable se retorna el valor de sta.
Si la raz resulta ser un operador, entonces recursivamente se evalan los subrboles izquierdo y
derecho, y se retorna el valor que resulta al operar los valores obtenidos de las evaluaciones de los
subrboles con el operador respectivo.
RECORRIDOS DE RBOLES BINARIOS

Existen tres formas principales para recorrer un rbol binario en forma recursiva. Estas son:
Preorden: raz - subrbol izquierdo - subrbol derecho.
Inorden: subrbol izquierdo - raiz - subrbol derecho.
Postorden: subrbol izquierdo - subrbol derecho - raz.
Por ejemplo, al recorrer el rbol de expresiones anterior en preorden se obtiene:
*+ab-cd
Al recorrer el rbol en inorden se obtiene:
22

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

a+b*c-d
Al recorrer el rbol en postorden se obtiene:
ab+cd-*
La expresin que se obtiene con el recorrido en postorden se conoce como notacin polaca.
RBOLES GENERALES
En un rbol general cada nodo puede poseer un nmero indeterminado de hijos. La
implementacin de los nodos en este caso se realiza de la siguiente manera: como no se sabe de
antemano cuantos hijos tiene un nodo en particular se utilizan dos referencias, una a su primer hijo y
otra a su hermano ms cercano. La raz del rbol necesariamente tiene la referencia a su hermano
como null.
class NodoArbolGeneral
{
Object elemento;
NodoArbolGeneral hijo;
NodoArbolGeneral hermano;
}

23

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

2014

Ntese que todo rbol general puede representarse como un rbol binario, con la salvedad que el
hijo derecho de la raz es siempre null. Si se permite que la raz del rbol tenga hermanos, lo que se
conoce como bosque, entonces se tiene que el conjunto de los bosques generales es isomorfo al
conjunto de los rboles binarios. En efecto, las propiedades vistas en los rboles binarios se siguen
cumpliendo en los rboles generales.

BIBLIOGRAFIA
http://www.aprenderaprogramar.com/
http://oasis.cisc-ug.org/pages1/descargas.htm
http://www.lawebdelprogramador.com
http://www.aulaclic.net/

COMISION REVISORA:
ING. WALTHER VARGAS GONZALEZ
ING. JOFFRE VAZQUEZ DEL ROSARIO
TLGO. SOLANGE GOMEZ SALTOS

24

Gua didctica de la Materia de Estructura de Datos II


Docente: Ing. Danny Avilez Castillo

También podría gustarte