Está en la página 1de 28

INGENIERÍA DE SISTEMAS

Estructura de Datos

Árboles

Ing. Juan Vera Castillo


Algoritmo y Estructura de Datos

Objetivos :

• Definición de Árboles
• Características de los árboles
• Árboles binarios
ESTRUCTURA DE DATOS – Árboles

DEFINICION DE ARBOL

Los árboles son estructuras de datos jerarquizadas,


organizadas y dinámicas. Formada por un conjunto de
nodos y un conjunto de punteros que conectan pares de
nodos.
• Jerárquica porque los componentes están a distinto
nivel.
• Organizada porque importa la forma en que este
dispuesto el contenido.
• Dinámica porque su forma, tamaño y contenido
pueden variar durante la ejecución.

Al primer nodo se le conoce con el nombre de RAIZ


ESTRUCTURA DE DATOS – Árboles

REPRESENTACION DE UN ARBOL

a A RAIZ
b
e
f
B C D
c
d

E F

Representación Representación
Textual Nodal
ESTRUCTURA DE DATOS – Árboles

CARACTERISTICAS
• Todo árbol tiene un único nodo raíz.
• Todo nodo, excepto la raíz esta conectado por
medio de un puntero o arista a un único nodo,
conocido como nodo padre, que le(s) antecede.
• Hay un único camino desde la raíz a cada nodo.
El numero de punteros que atraviesa es la
longitud del camino.
• Todo nodo que no tiene mas ramificaciones se le
conoce como nodo terminal u hoja.
ESTRUCTURA DE DATOS – Árboles

CARACTERISTICAS

• Padre es el antecesor inmediato de un nodo


• Hijo, es cualquiera de sus descendientes inmediatos.
• Hermano de un nodo, es otro nodo con el mismo padre.
• El grado de un nodo cualesquiera, es el numero de
descendientes directos que tenga.
• Grado de un Árbol, es el máximo grado de todos los
nodos.
• Nivel, es el número de punteros o aristas o arcos que
deben ser recorridos para llegar a un determinado nodo.
• Altura de un árbol, es el máximo número de niveles de
todos los nodos del árbol.
ESTRUCTURA DE DATOS – Árboles

CARACTERISTICAS DE LOS
ÁRBOLES
A raiz

Grado 2 B C D hijos

E F G

H I Nivel 3
Grado del Arbol 3

hojas
ESTRUCTURA DE DATOS – Árboles

APLICACIONES DE ÁRBOLES

• Representación de un árbol genealógico.


• Representación de operaciones algebraicas.
• Para realizar la administración de directorios como
para UNIX, Linux, Windows.
• Crear directorio de archivos en programas, etc.
ESTRUCTURA DE DATOS – Árboles

ÁRBOLES BINARIOS
Son los árboles cuyo grado es 2 como máximo.

Es decir, un árbol es binario si tiene 0, 1 o 2 hijos


ESTRUCTURA DE DATOS – Árboles

(a) es un nodo binario de un solo nodo, por lo tanto A es


la raíz en el nivel 0.
(b) Árbol binario de 3 nodos. A es la raíz de grado 2 por
tener 2 hijos.
(c) Árbol binario de 3 nodos. A es la raíz de grado 1, B es
de grado 1 por tener 1 hijo. El árbol solo tiene hijos
derechos y ningún hijo izquierdo.
(d) Árbol binario de 2 nodos. A es la raíz de grado 1, B es
de grado 0 por no tener hijos. El árbol solo tiene hijos
izquierdos y ningún hijo derecho.
(e) Árbol binario de 5 nodos, de longitud 3 con E y D
como hojas.
ESTRUCTURA DE DATOS – Árboles

Ejemplos :
ESTRUCTURA DE DATOS – Árboles

TIPO DE ÁRBOLES BINARIOS


(1) Los árboles binarios completos o llenos, donde :

Cada nodo tiene 2 hijos, de este modo se cumple :

En el nivel cero (2^0) existe un nodo


En el nivel uno (2^1) existen dos nodos
En el nivel dos (2^2) existen cuatro nodos, etc.

Así por inducción :


En el nivel k hay 2^k nodos

Solo para árboles binarios completos


ESTRUCTURA DE DATOS – Árboles

RECORRIDO DE UN ARBOL BINARIO


• Los árboles binarios se pueden recorrer de la siguiente
manera:
Pre-Orden (Prefijo)  RID
- Visitar la raiz
- Recorrer todo el sub-arbol izquierdo.
izquierdo
- Recorrer todo el sub-arbol derecho.
derecho

En-Orden (Infijo)  IRD


- Recorrer todo el sub-arbol izquierdo.
izquierdo
- Visitar la raiz.
raiz
- Recorrer todo el sub-arbol derecho.
derecho

Post-Orden (Postfijo)  IDR


- Recorrer todo el sub-arbol izquierdo.
izquierdo
- Recorrer todo el sub-arbol derecho.
derecho
- Visitar la raiz.
raiz
ESTRUCTURA DE DATOS – Árboles

PreOrden (RID):
_____________
H
InOrden (IRD):
P _____________
D
PostOrden (IDR):
_____________
A M R

PreOrden (RID):
C J O
HDACPMJOR
InOrden (IRD):
ACDHJMOPR
PostOrden (IDR):
CADJOMRPH
ESTRUCTURA DE DATOS – Árboles

Ejercicio : PreOrden (RID):


_____________
L

J InOrden (IRD):
_____________

F R PostOrden (IDR):
_____________
A H M W

C G I T Z
Algoritmo y Estructura de Datos

ÁRBOLES BINARIOS DE BÚSQUEDA

Objetivos :

• Árboles binarios de búsqueda.


• Tipo de árboles binarios de búsqueda.
• Operaciones básicas.
• Implementación de un árbol binario ordenado.
ESTRUCTURA DE DATOS – Árboles

ÁRBOLES BINARIOS DE BÚSQUEDA

Definición:

Un árbol binario de búsqueda también llamado árbol


ordenado es aquel donde se cumple que nodos
menores que la raíz van a la izquierda y los que son
mayores que la raíz van a la derecha.

Los nodos insertados en árboles de búsqueda binarios


se insertan como hojas.
ESTRUCTURA DE DATOS – Árboles

OPERACIONES BASICAS

Las operaciones básicas son:

1. Inserción de un nuevo nodo al árbol binario


(agregar).
2. Recorrer un árbol binario.
3. Búsqueda de un Nodo del árbol binario.
4. Eliminar un Nodo del árbol binario.
ESTRUCTURA DE DATOS – Árboles

INSERCION DE UN NODO A UN
ARBOL (AGREGAR)
Se crea un nuevo Nodo
Si la raíz esta vacía entonces raíz será el nuevo Nodo
Si la raíz tiene datos, comparamos si es menor se va a la izquierda y si
es mayor a la derecha siempre y cuando sea una hoja

nuevo (d) nuevo


raiz raiz
(b) raiz
4
raiz 9
null 6 6
nuevo
(a) raiz 6 4
(c) 9
6 4 (e)
ESTRUCTURA DE DATOS – Árboles

RECORRIDO DE UN ARBOL BINARIO


Para visualizar o consultar los datos almacenados en un árbol se
necesita "recorrer" el árbol o "visitar" los nodos del mismo

1. En el "recorrido en profundidad”, tenemos los siguientes métodos:


Pre-Orden (Prefijo)  RID
In-Orden (Infijo)  IRD
Post-Orden (Postfijo)  IDR

1. En el "recorrido en anchura", el proceso se realiza horizontalmente


desde la raíz a todos sus hijos, a continuación a los hijos de sus
hijos y así sucesivamente hasta que todos los nodos han sido
procesados.
ESTRUCTURA DE DATOS – Árboles

BUSQUEDA DE UN ARBOL BINARIO


El proceso de búsqueda se hace recorriendo el árbol.

1. Primero ver si el dato esta en la raíz


2. Si el dato no esta en la raíz, comparar si es menor que la raíz y
buscar en la izquierda, sino buscar en la derecha, …

raiz p dato= 5
p
6 MAYOR

MENOR 4
p 9
1 5

3
ESTRUCTURA DE DATOS – Árboles

IMPLEMENTACION DE UN ARBOL BINARIO

6 izq der
4 info
9
1 5

3
ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

IMPLEMENTACION DE LA CLASE NODO

public class Nodo


{
public String codigo;
public String nombre;
public String sueldo ;

public Nodo izq;


public Nodo der;

public Nodo(String cod, String nom, String suel)


{
codigo = cod;
nombre = nom;
sueldo = suel;
}
}
0

null null
ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

IMPLEMENTACION DE LA CLASE ARBOL

public class Arbol


{
Nodo raiz ;

public Arbol()
{
raiz = null ;
} raiz
}

null
ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

IMPLEMENTACION DE LA CLASE ARBOL


ALGUNOS METODOS IMPORTANTES
public class Arbol
{
Nodo raiz ;
public int tamaño(Nodo p)
{
if(p==null)
return 0;
else
return 1+ tamaño(p.izq) + tamaño(p.der);
}
public int altura(Nodo p)
{
if(p==null)
return -1;
else
return 1+ Math.max( tamaño(p.izq), tamaño(p.der) );
}
}
ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

public class Arbol


{ INSERTAR (AGREGAR)
Nodo raiz ;

public void agregar(String cod, String nom, String suel)


{
Nodo nuevo, p, q;
nuevo = new Nodo(cod, nom, suel);
if(raiz == null)
raiz = nuevo;
else Permite agregar un
{
p = q = raiz; nuevo nodo al árbol
while(q != null)
{
p = q;
if(cod.compareTo(p.codigo)<0)
q = p.izq;
else
q = p.der;
}

if(cod.compareTo(p.codigo)<0)
p.izq =nuevo;
else
p.der= nuevo;
}

}
}
Metodo agregar no recursivo
ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

INSERTAR (AGREGAR)

public Nodo agregar(Nodo p, String cod, String nom, String suel)


{
if(p == null)
p = new Nodo(String cod, String nom, String suel);
else
if(cod.compareTo(p.codigo)>0)
p.der = agregar(p.der, String cod, String nom, String suel);
else
p.izq = agregar(p.izq, String cod, String nom, String suel);
return p;
}

Permite agregar un
nuevo nodo al árbol

Metodo agregar recursivo


ESTRUCTURA DE DATOS ARBOL – Arbol de objetos

IMPLEMENTACION DE LA CLASE ARBOL :


RECORRIDO DE UN ARBOL ( EN PROFUNDIDAD)
public class Arbol
{
Nodo raiz ;

public String enOrden( Nodo p)


{
if(p != null)
return enOrden(p.izq) + info + "\n" + enOrden(p.der);
return "";
}
public String preOrden( Nodo p)
{
if(p != null)
return info + "\n" + preOrden(p.izq) + preOrden(p.der);
return "";
}
public String postOrden( Nodo p)
{
if(p != null)
return postOrden(p.izq) + postOrden(p.der)+ info + "\n";
return "";
}

También podría gustarte