Árboles estructuras de datos mc beatriz beltrán martínez primavera 2015
TRANSCRIPT
![Page 1: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/1.jpg)
ÁrbolesEstructuras de Datos
MC Beatriz Beltrán MartínezPrimavera 2015
![Page 2: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/2.jpg)
Introducción
• Aparecen estructuras de tipo árbol en:• Sistemas Operativos: Sistema de ficheros (Árbol de
directorios).• Compiladores, procesadores de textos, algoritmos de
búsqueda.• Elementos:
• Nodos.• Conexiones (dirigidas) entre pares de nodos.• Un nodo particular: Raíz.• Cada nodo (excepto raíz) está conectado al menos
con otro (padre). Relación padre-hijo.2
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 3: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/3.jpg)
Conceptos
• Un único camino conduce de la raíz a cada nodo.• Longitud del camino: Número de conexiones a
atravesar.• Nodos sin hijos: Hojas (leaves).• Árbol con N nodos N-1 conexiones entre nodos.• Profundidad de un nodo:
• Longitud del camino raíz nodo.• Altura de un nodo:
• Longitud del camino desde el nodo a su hoja más profunda.
• Hermanos: Nodos con el mismo padre (siblings).3
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 4: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/4.jpg)
Conceptos
• El grado de un nodo es el número de flechas que salen de ese nodo.
• El grado de un árbol es el mayor de los grados que puede hallarse en el árbol.
• Un camino de un nodo n1 a otro nk, se define como la secuencia de nodos n1, n2, ... nk tal que ni es padre de ni+1
para 1 i < k.• Longitud del camino entre 2 nodos, es el número de
arcos que hay entre ellos.
4
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 5: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/5.jpg)
Conceptos
• Relación antepasado (u) / descendiente (v):• Si hay camino de u a v.
• Tamaño de un nodo:• Número de descendientes (incluyendo al nodo).
• Árbol (definición recursiva):• o es vacío,• o consiste en una raíz y cero o más (sub)árboles no
vacíos A1..Ak conectados a la raíz.
5
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 6: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/6.jpg)
Implementación
1. Cada nodo contiene:• Referencias a todos sus hijos.• Datos almacenados en el nodo.• Problema: Número de hijos desconocido.
2. Cada nodo:• Lista con sus hijos.• Referencia a los datos contenidos.• Referencia a su nodo hermano.• Representación "first child / next sibling“.
6
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 7: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/7.jpg)
Implementación
7
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
sigHermanoprimerHijo
null
nullnull
nullnull null null null
nullnull
nodoRaiz
![Page 8: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/8.jpg)
Árbol N-ario
• Ningún nodo puede tener más de N hijos.• El más utilizado: Binario, 2 hijos (left, right).• Definición recursiva (Árbol binario):
• ... o es vacío.• ... o tiene raíz, árbol derecho, árbol izquierdo.
• Implementación:• Conocido el número de hijos. 2 referencias.
8
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 9: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/9.jpg)
Árboles Binarios
• Árbol binario lleno (full binary tree).• Todas las hojas tiene la misma profundidad.• El resto de nodos (no terminales) tienen 2 hijos.
• Árbol binario completo (complete binary tree).• Cada nivel (excepto el más profundo) debe contener
todos sus posibles nodos.• En el nivel más profundo, los nodos están lo más a la
izquierda que sea posible.
9
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 10: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/10.jpg)
Expresiones
• Un nodo terminal representa un operando.• El resto de los nodos representan operadores (binarios).
10
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
Evaluación de la expresión:Evaluación de los subárboles (recursivamente).Aplicación del operador a los valores obtenidos.
6 + ((7 - 3) * 5)+
6 *
5-
37
![Page 11: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/11.jpg)
Recursividad• El tipo árbol se define recursivamente.• Muchas rutinas para manejo de árboles se implementan
fácilmente de forma recursiva.public class NodoBinario{ Object dato; NodoBinario left; NodoBinario right; public NodoBinario (Object elemento) { dato = elemento; left = null; right = null; } // Métodos...} 11
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
dato
rightleft
![Page 12: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/12.jpg)
Recorridos
• Recorrido:• Acceso a todos los nodos de un árbol• Ej: Para realizar una operación en cada nodo
• Fácil implementación mediante recursividad.• Tipos de recorrido:
• Según el orden en que se "visitan" los nodos.• Recorrido preorder.• Recorridos postorder.• Recorridos inorder.
12
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
![Page 13: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/13.jpg)
Recorridos
• Recorrido preorden:1. Nodo raíz2. Subárbol left en preorden3. Subárbol right en preorden
13
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
// en la clase NodoBinariopublic void mostrarPreorden(){ System.out.println(dato); if (left != null) left.mostrarPreorden(); if (right != null) right.mostrarPreorden();}
1Preorden
2 3
64
5 7
![Page 14: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/14.jpg)
Recorridos
• Recorrido inorden:1. Subárbol left en inorden2. Nodo raíz3. Subárbol right en inorden
14
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
2Inorden
1 5
73
4 6
// en la clase NodoBinariopublic void mostrarInorden(){ if (left != null) left.mostrarInorden(); System.out.println(dato); if (right != null) right.mostrarInorden();}
![Page 15: Árboles Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015](https://reader035.vdocuments.net/reader035/viewer/2022062807/5665b4691a28abb57c9150eb/html5/thumbnails/15.jpg)
Recorridos
• Recorrido postorden:1. Subárbol left en postorden2. Subárbol right en postorden3. Nodo raíz
15
MC
Bea
triz
Bel
trán
Mar
tínez
FC
C-B
UA
P
Prim
aver
a 20
15
7Postorden
1 6
53
2 4
// en la clase NodoBinariopublic void mostrarPostorden(){ if (left != null) left.mostrarPostorden(); if (right != null) right.mostrarPostorden(); System.out.println(dato);}