Sie sind auf Seite 1von 33

rboles

Felipe Restrepo Calle


ferestrepoca@unal.edu.co

Departamento de Ingeniera de Sistemas e Industrial


Facultad de Ingeniera
Universidad Nacional de Colombia
Sede Bogot
rboles
Conceptos Implementaciones A. Binarios Recorridos

1. Conceptos

2. Implementaciones

3.rboles binarios

4.Recorridos

Estructuras de Datos rboles 2


rboles
Conceptos Implementaciones A. Binarios Recorridos

Desventaja de las listas


Para una gran cantidad de datos, la complejidad
temporal lineal O(N) de algunas operaciones con
listas es prohibitivo.
Arreglos:
o Insertar
o Eliminar
Listas enlazadas:
o Acceso
Es posible mejorar este tiempo?
O(log N) como en el algoritmo de bsqueda binaria

Estructuras de Datos rboles 3


rboles
Conceptos Implementaciones A. Binarios Recorridos

Desventaja de las listas

Estructuras de Datos rboles 4


rboles
Conceptos Implementaciones A. Binarios Recorridos

rboles
Los elementos que constituyen un rbol mantienen una
estructura jerrquica, obtenida a partir de estructuras
lineales, al eliminar el requisito de que cada elemento
tiene como mximo un sucesor.

Estructuras de Datos rboles 5


rboles
Conceptos Implementaciones A. Binarios Recorridos

rboles

Estructuras de Datos rboles 6


rboles
Conceptos Implementaciones A. Binarios Recorridos

Aplicaciones de rboles
Representacin de datos jerrquicos:
Taxonomas
Organigramas
Genealogas
Sistemas de archivos
Jerarqua de clases en Java
Algoritmos de bsqueda y ordenacin
Compiladores (rboles sintcticos, rboles de
expresiones)

Estructuras de Datos rboles 7


rboles
Conceptos Implementaciones A. Binarios Recorridos

Terminologa
Los elementos de los rboles se llaman nodos
Conceptualmente se pueden ver los rboles de arriba hacia
abajo (como un rbol de genealoga familiar)
El nodo que est ms arriba
es la raz (root)
Los nodos estn conectados
por enlaces (edges)
Hay nodos padres (parent) e
hijos (child)
Los nodos sin hijos se llaman
hojas (leaves)
Estructuras de Datos rboles 8
rboles
Conceptos Implementaciones A. Binarios Recorridos

Terminologa
Los nodos que comparten el mismo padre son hermanos
(siblings)
Un camino (path) es una secuencia de nodos, tal que el
siguiente nodo es hijo del anterior
Rama: camino que termina en una hoja

Estructuras de Datos rboles 9


rboles
Conceptos Implementaciones A. Binarios Recorridos

Terminologa
La profundidad (depth) de un nodo es la longitud del
camino desde la raz (ej.: 2)
La altura (height) de un rbol es la profundidad mxima (3)
Si existe un camino entre dos nodos, se dice que uno de
ellos es un ascendiente y el otro es un descendiente
Peso: nmero de hojas del rbol (ej.: 6)

Estructuras de Datos rboles 10


rboles
Conceptos Implementaciones A. Binarios Recorridos

Terminologa
Grado de un rbol es el nmero mximo de hijos que
pueden tener sus subrboles:
Si el rbol es n-ario, el grado es n
Un rbol con n = 2 se denomina rbol binario
rbol lleno es un rbol en el que todos sus subrboles
tienen n hijos, y adems es perfecto, si est lleno y todas sus
hojas tienen la misma profundidad.

Estructuras de Datos rboles 11


rboles
Conceptos Implementaciones A. Binarios Recorridos

Implementaciones de rboles
Varias implementaciones:
Representaciones secuenciales
Arreglo unidimencional
Implementacin mediante una lista de hijos
Representaciones enlazadas:
Cada nodo con enlace al primer hijo y hermanos
Implementacin mediante una lista de listas

Estructuras de Datos rboles 12


rboles
Conceptos Implementaciones A. Binarios Recorridos

Representacin secuencial: arreglo unidimensional


Se numeran secuencialmente los nodos del rbol
hipotticamente lleno desde la raz a las hojas por niveles
(comenzando por el nivel 1, despus el nivel 2, ) y de
izquierda a derecha en cada nivel.
La representacin secuencial se puede hacer usando un
vector unidimensional:
la raz se guarda en la primera posicin
si un nodo n est en la direccin i, entonces su hijo izquierdo
estar en la direccin 2i y su hijo derecho en la direccin
2i + 1

Estructuras de Datos rboles 13


rboles
Conceptos Implementaciones A. Binarios Recorridos

Representacin secuencial: arreglo unidimensional

Estructuras de Datos rboles 14


rboles
Conceptos Implementaciones A. Binarios Recorridos

Representacin secuencial: con lista de hijos


En un ndice aparecen todos los nodos.
Por cada nodo existe una lista de hijos.

Estructuras de Datos rboles 15


rboles
Conceptos Implementaciones A. Binarios Recorridos

Representacin enlazada: cada nodo con enlace al


primer hijo y hermanos
public class TreeNode<T> {
T dato;
TreeNode<T> primerHijo;
TreeNode<T> hermanoSiguiente;
}

Estructuras de Datos rboles 16


rboles
Conceptos Implementaciones A. Binarios Recorridos

Representacin enlazada: lista de listas


Cada nodo apunta a una lista enlazada de hijos
public class TreeNode<T> {
T dato;
Collection<TreeNode<T>> hijos;
}

Estructuras de Datos rboles 17


rboles
Conceptos Implementaciones A. Binarios Recorridos

rboles binarios
Cada nodo slo puede tener dos hijos: hijo izquierdo e
hijo derecho
Se simplifica la implementacin y la lgica de los
algoritmos

Estructuras de Datos rboles 18


rboles
Conceptos Implementaciones A. Binarios Recorridos

Implementacin de rbol binario


public class BinaryNode<T> {
T dato;
BinaryNode<T> hijoIzq;
BinaryNode<T> hijoDer;
}

Estructuras de Datos rboles 19


rboles
Conceptos Implementaciones A. Binarios Recorridos

Aplicacin: rbol de expresiones


Sirven para almacenar expresiones matemticas
Las hojas sern operandos y los nodos padres sern
operadores
La mayora de operadores tienen dos operandos
Ejemplo:
((x + y) * z)/300

Estructuras de Datos rboles 20


rboles
Conceptos Implementaciones A. Binarios Recorridos

Aplicacin: rbol de expresiones


Ejemplo:
(a + b * c) + ((d * e + f ) * g)

Estructuras de Datos rboles 21


rboles
Conceptos Implementaciones A. Binarios Recorridos

Aplicacin: rbol de decisin


Ejemplo:

Estructuras de Datos rboles 22


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos
Recorrer un rbol es visitar cada nodo del rbol una
sola vez
El recorrido de un rbol permite ver la lista de datos
almacenada en el rbol (ordenada segn se visitan los
nodos)
Dos categoras de recorrido:
Recorridos en profundidad
o Preorden
o Inorden
o Postorden
Recorridos en anchura o por niveles
Estructuras de Datos rboles 23
rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Preorden: consiste en visitar al nodo padre y despus a sus hijos
rbol general: preorden(TreeNode x)
if(x != null){
print(x.dato);
for (TreeNode hijo: x.hijos)
preorden(hijo);
}
rbol binario: preorden (BinaryNode x)
if(x != null){
print(x.dato);
preorden(x.hijoIzq);
preorden(x.hijoDer);
}

Estructuras de Datos rboles 24


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Preorden: consiste en visitar al nodo padre y despus a sus hijos

Recorrido preorden:
ABDEHCFIG

Estructuras de Datos rboles 25


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Postorden: consiste en visitar a los hijos y despus al padre
rbol general: postorden(TreeNode x)
if(x != null){
for (TreeNode hijo: x.hijos)
postorden(hijo);
print(x.dato);
}
rbol binario: postorden (BinaryNode x)
if(x != null){
postorden(x.hijoIzq);
postorden(x.hijoDer);
print(x.dato);
}

Estructuras de Datos rboles 26


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Postorden: consiste en visitar a los hijos y despus al padre

Recorrido postorden:
DHEBIFGCA

Estructuras de Datos rboles 27


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Inorden: consiste en visitar al hijo izquierdo, despus al padre, y
por ltimo, al hijo de la derecha.
Exclusivo de rboles binarios.
rbol binario:
inorden (BinaryNode x)
if(x != null){
postorden(x.hijoIzq);
print(x.dato);
postorden(x.hijoDer);
}

Estructuras de Datos rboles 28


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en profundidad
Inorden: consiste en visitar al hijo izquierdo, despus al padre, y
por ltimo, al hijo de la derecha.

Recorrido inorden:
DBHEAFICG

Estructuras de Datos rboles 29


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en anchura o por niveles


Consiste en visitar los nodos desde la raz hacia las hojas, y de
izquierda a derecha dentro de cada nivel
Algoritmo para rboles binarios:
niveles (BinaryNode a)
MyQueue<BinaryNode> c; // cola de BinaryNode
BinaryNode aux;
c.enqueue(a);
while(!c.isEmpty())
aux = c.dequeue();
print(aux);
if(aux.hijoIzq != null)
c.enqueue(aux.hijoIzq);
if(aux.hijoDer != null)
c.enqueue(aux.hijoDer);

Estructuras de Datos rboles 30


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos en anchura o por niveles


Consiste en visitar los nodos desde la raz hacia las hojas, y de
izquierda a derecha dentro de cada nivel.

Recorrido por niveles:


ABCDEFGHI

Estructuras de Datos rboles 31


rboles
Conceptos Implementaciones A. Binarios Recorridos

Recorridos

Recorrido preorden:
ABDEHCFIG

Recorrido postorden:
DHEBIFGCA

Recorrido inorden:
DBHEAFICG

Recorrido por niveles:


ABCDEFGHI
Estructuras de Datos rboles 32
rboles
https://sites.google.com/a/unal.edu.co/estructuras-de-datos-2015-1/

Felipe Restrepo Calle


ferestrepoca@unal.edu.co

Departamento de Ingeniera de Sistemas e Industrial


Facultad de Ingeniera
Universidad Nacional de Colombia
Sede Bogot

Das könnte Ihnen auch gefallen