You are on page 1of 17

OBJETOS Y ABSTRACCIÓN DE DATOS

DOCENTE:
Christian Torres Morán

CONTENIDO A TRATAR HOY:


Estructuras No lineales: Árboles Binarios, Recorridos

Periodo: Mayo – Septiembre 2022


RETROALIMENTACIÓN:
Interrogantes de la clase anterior, el estudiante debe contestar estas
preguntas con sus propias palabras y ejemplos, subirlos al aula virtual en
el repositorio de actuaciones “Retroalimentación”:
1. ¿Cuál es la diferencia entre arboles y grafos en las estructuras de datos?
2. ¿Qué nombres reciben los nodos por su relación?
3. ¿Qué nombres reciben los nodos por su ubicación?
4. ¿Para qué sirven los árboles en las estructuras de datos?
5. ¿Qué es orden y qué es grado?
6. ¿Qué es nivel y que es altura o profundidad?
7. ¿Qué es el peso y la rama de un árbol?
8. ¿Qué es un subárbol?
9. ¿Qué es un árbol binario distinto?
10. ¿Qué es un árbol binario similar?
11. ¿Qué es un árbol binario equivalente?
12. ¿Qué es un árbol binario equilibrado?
OBJETIVO DE LA CLASE:

✔ ENTENDER COMO FUNCIONAN LOS ÁRBOLES BINARIOS DE BÚSQUEDA Y COMO SE


APLICAN SUS REGLAS PARA DESARROLLAR APLICACIONES MODELOS.
ÁRBOLES BINARIOS
✔ Un árbol binario es un árbol en el que ningún nodo puede tener más de dos subárboles.
✔ En un árbol binario cada nodo puede tener cero, uno o dos hijos (subárboles).
✔ Por la relación entre nodos se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

✔ Por regla general el subárbol izquierdo de cualquier nodo


(si no está vacío) contiene valores menores que el que
contiene dicho nodo, y el subárbol derecho (si no está
vacío) contiene valores mayores.

Evolución de la inserción del elemento "5" en un ABB.


Secuencia 1: Secuencia 2: Secuencia 3: Secuencia 4: Resultado:
Árboles Binarios
✔ Todas las operaciones realizadas sobre los árboles binarios de búsqueda están basadas en la comparación de sus valores
índices o clave de ubicación o posicionamiento de los mismos, por lo que se necesita realizar procedimientos de comparación
que permitan establecer un recorrido de la estructura basado en cual es mayor y cual menor.
✔ La búsqueda en un árbol binario consiste en acceder desde la raíz del árbol, si el elemento a localizar coincide con este la
búsqueda ha concluido con éxito, si el elemento es menor se busca en el subárbol izquierdo y si es mayor en el derecho. Si se
alcanza un nodo hoja y el elemento no ha sido encontrado es que no existe en el árbol.
✔ La búsqueda de un elemento en un ABB (Árbol Binario de Búsqueda) se puede realizar de dos formas: iterativa o recursiva.
RECORRIDOS: Se puede hacer el recorrido de un árbol en profundidad o en anchura
✔ El recorrido en profundidad aplica una secuencia desde la raíz hacia el descendiente más lejano del primer hijo y luego
continúa con el siguiente hijo. Existen los siguientes tipos de recorridos en profundidad: Preorden, inorden y postorden.
▪ Recorrido en preorden.
1. Visitar la raíz.
2. Recorrer subárbol izquierdo en preorden.
3. Recorrer subárbol derecho en preorden.
▪ Recorrido en inorden.
1. Recorrer subárbol izquierdo en inorden.
2. Visitar la raíz.
3. Recorrer subárbol derecho en inorden.
▪ Recorrido en postorden.
1. Recorrer subárbol izquierdo en postorden.
2. Recorrer subárbol derecho en postorden.
3. Visitar la raíz.
Árboles Binarios: Recorridos en Preorden

Código de una función recursiva que recorre un


5 árbol en preorden:
0 private void preorden(Nodo H) {
if(H==null) {
3 9 return;
4 0 }
System.out.println(“ “ + H.getValor());
4 7 9 preorden(H.getIzquierdo());
5 1 2 9 preorden(H.getDerecho());
}

Recorrido: 50 34 5 41 90 72 99
1. Raíz.
2. Subárbol izquierdo en preorden.
3. Subárbol derecho en preorden.
Árboles Binarios: Ejercicios

F B A D C E G I H
Árboles Binarios: Recorridos en Inorden

5 Código de una función recursiva que recorre un


árbol en inorden:
0
private void inorden(Nodo H) {
3 9 if(H==null) {
4 0 return;
}
4 7 9 inorden(H.getIzquierdo());
System.out.println(“ “ + H.getValor());
5 1 9
2 inorden(H.getDerecho());
}

Recorrido 5 34 41 50 72 90 99
1. Subárbol izquierdo en Inorden.
2. Raíz.
3. Subárbol derecho en Inorden.
Árboles Binarios: Ejercicios

A B C D E F G H
I
Árboles Binarios: Recorridos en Postorden

5 Código de una función recursiva que recorre un


árbol en postorden:
0 private void postorden(Nodo H) {
3 9 if(H==null) {
return;
4 0 }
postorden(H.getIzquierdo());
4 7 9 postorden(H.getDerecho());
5 System.out.println(“ “ + H.getValor());
1 2 9 }

Recorrido 5 41 34 72 99 90 50
1. Subárbol izquierdo en postorden.
2. Subárbol derecho en postorden.
3. Raíz.
Árboles Binarios: Ejercicios

A C E D B H I G F
Árboles Binarios: Ejercicios
Resultado de aplicar el recorrido en:

Inorden = 6, 9, 13, 14, 15, 17, 20, 26, 64,


72
Preorden = 15, 9, 6, 14, 13, 20, 17, 64, 26,
72
Postorden = 6, 13, 14, 9, 17, 26, 72, 64, 20,
15

Resultado de aplicar el recorrido en:

Inorden =

Preorden =

Postorden =
Árboles Binarios: Recrear el Árbol Binario a partir de los recorridos.
✔ Se requiere saber al menos 2 recorridos de profundidad.
✔ Partimos que de un árbol binario sólo conocemos sus recorridos, en donde es obligado que esté el recorrido inOrden
✔ Debemos saber el número de nodo, para construir una matriz de n x n.

InOrden 🡪.

PreOrden 🡪.
✔ Ubicar en la parte superior (horizontal)los elementos
del recorrido inOrden de izquierda a derecha

✔ Ubicar en la primera columna(parte izquierda) los


elementos del recorrido PreOrden de arriba hacia
abajo.
Árboles Binarios: Recrear el Árbol Binario a partir de los recorridos.
InOrden 🡪.
2 5 9 20 30 34 50 72 80 90 99 201 300

50

34
PreOrden 🡪.

20

30

90

72

80

99

201

300
Árboles Binarios: Recrear el Árbol Binario a partir de los recorridos.
✔ Se requiere saber al menos 2 recorridos de profundidad.
✔ Partimos que de un árbol binario sólo conocemos sus recorridos, en donde es obligado que esté el recorrido inOrden
✔ Debemos saber el número de nodo, para construir una matriz de n x n.

InOrden 🡪.

✔ Ubicar en la parte superior (horizontal)los elementos


del recorrido inOrden de izquierda a derecha

✔ Ubicar en la primera columna(parte izquierda) los


elementos del recorrido PostOrden de abajo hacia
arriba.

PostOrden 🡪.
Árboles Binarios: Recrear el Árbol Binario a partir de los recorridos.
InOrden 🡪.
2 5 9 20 30 34 50 72 80 90 99 201 300

50

90

99

201

300

72

80
PostOrden 🡪.

34

20

30

2
Árboles Binarios: Recorridos en Amplitud o por Niveles
✔ El recorrido por anchura es un trayecto que se hace por niveles a partir del nivel 0, por cada nivel se recorren los nodos
hermanos de izquierda a derecha.

5
0
3 9 50 34 90 5 41 72 99
4 0
4 7 9
5 1 9
2
✔ Para su implementación hay que procesar el nodo raíz y recordar las direcciones de sus hijos izquierdo y derecho para acceder
a ellos en el mismo orden en que se encuentran.
✔ Hay que repetir el proceso por cada nodo, recordando las direcciones de sus hijos izquierdo y derecho y recuperarlas en el
mismo orden en que han entrado.
✔ Existe una estructura de datos que extrae los elementos en el mismo orden en que entran: la cola.
▪ Se utiliza una cola que almacene árboles (punteros a nodos).
▪ Se introduce la dirección del nodo raíz en la cola.
▪ Se extraen elementos de la cola y por cada elemento que se extrae que no sea un árbol vacío (un puntero nulo), se
introducen las direcciones de sus hijos izquierdo y derecho.
▪ El proceso termina cuando la cola esté vacía.

You might also like