You are on page 1of 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

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

rboles
Conceptos

Implementaciones

A. Binarios

Recorridos

Desventaja de las listas

Estructuras de Datos

rboles

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

rboles
Conceptos

Implementaciones

A. Binarios

Recorridos

rboles

Estructuras de Datos

rboles

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,
expresiones)

Estructuras de Datos

rboles

rboles

de

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

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

rboles
Conceptos

Implementaciones

A. Binarios

Recorridos

Terminologa

La profundidad (depth) de un nodo es la longitud del


camino desde la raz, es decir, el nmero de enlaces (ej.: 1)
La altura (height) de un rbol es la profundidad mxima (2)
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
Representaciones secuenciales

Arreglo unidimensional
Implementacin mediante una lista de hijos

Representaciones enlazadas:

Estructuras de Datos

Cada nodo con enlace al primer hijo y hermanos


Implementacin mediante una lista de listas

rboles

12

rboles
Conceptos

Implementaciones

A. Binarios

Recorridos

Representacin secuencial: arreglo unidimensional

Se numeran secuencialmente los nodos del rbol


hipotticamente perfecto 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
arreglo 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


ArrayList que contiene todos los nodos
Cada nodo contiene un dato y 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


Ms utilizada para rboles N-arios
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 como mximo 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 n-ario: 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 n-ario: 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){
inorden(x.hijoIzq);
print(x.dato);
inorden(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-2/

Felipe Restrepo Calle


ferestrepoca@unal.edu.co

Departamento de Ingeniera de Sistemas e Industrial


Facultad de Ingeniera
Universidad Nacional de Colombia
Sede Bogot