Está en la página 1de 23

Arboles

ESTRUCTURAS DE DATOS [B]


1er. Semestre 2018
Josué D. Itzep
Definición Recursiva

Un árbol es un conjunto de nodos que:


 Es vacío
 Tiene un nodo determinado, llamado raíz, del que jerárquicamente descienden cero o
mas subárboles, que son también arboles.
Árbol

Un árbol es una estructura de datos NO lineal que consta de un conjunto finito de


elementos, llamados nodos y de un conjunto finito de líneas dirigidas, denominadas ramas,
que conectan los nodos. El numero de ramas asociado con un nodo es el grado del nodo.
Un árbol es un conjunto de uno o mas nodos tales que:
 Hay un nodo diseñado especialmente llamado raíz.
 Los nodos restantes se dividen en n >= 0 conjuntos distintos, T1, … Tn , tal que cada uno de
estos conjuntos es un Árbol. A estos arboles se les denomina subárboles.
Conceptos

 Utilizando el concepto de arboles genealógicos, un nodo puede ser considerado como


padre si tiene nodos sucesores.
 Dichos nodos sucesores se llaman hijos. Los hijos de un nodo y los hijos de los hijos se
llaman descendientes, y el padre y los abuelos de un nodo son sus ascendientes. En
subárboles cada nodo raíz tiene un único padre y cada padre tiene cero o mas hijos. Dos
o mas nodos con el mismo padre se llaman hermanos. Un nodo sin hijos es llamado hoja.
 El nivel de un nodo es su distancia al nodo raíz. La raíz tiene una distancia cero de si
misma, por ello se dice que esta en el nivel 0. Los hermanos siempre están al mismo nivel,
pero no todos los nodos del mismo nivel son necesariamente hermanos
Niveles
Niveles
Arboles
+ Conceptos

 Un camino es una secuencia de nodos en los que cada nodo es adyacente al siguiente.
Cada nodo del árbol puede ser alcanzado siguiendo un único camino que comienza en
el nodo raíz.
 La altura o profundidad de un árbol es el nivel de la hoja del camino mas largo desde la
raíz mas uno. Por definición, la altura de un árbol vacío es cero.
 Un árbol se divide en subárboles. Un subárbol es cualquier estructura conectada por
debajo del nodo raíz. Cada nodo de un árbol es la raíz de un subárbol que se define por
el nodo y todos sus descendientes.
Altura

Árbol
Arboles como Lista

 Es un formato utilizado para representar un árbol en una lista entre paréntesis. En esta
representación, cada paréntesis abierto indica el comienzo de un nuevo nivel y cada
paréntesis cerrado completa un nivel
Operaciones en Arboles

 Determinar su altura
 Determinar su numero de elementos
 Hacer una copia
 Visualizar el árbol binario
 Determinar si dos arboles son idénticos
 Borrar nodo
 Recorrer
 Insertar
Árbol Binario
Árbol Binario

 Es un árbol cuyos nodos no pueden tener mas de dos subárboles. En un árbol binario,
cada nodo puede tener cero, uno o dos hijos.
 Un árbol binario es una estructura recursiva. Cada nodo es la raíz de su propio subárbol y,
si tiene hijos, estos son raíces de subárboles.
 En cualquier nivel n, un árbol binario puede contener de 1 a 2n nodos. El numero de
nodos por nivel contribuye a la densidad del árbol
Recorridos

Los arboles binarios, pueden ser recorridos de distintas maneras, el recorrido a elegir
dependerá de objetivo q se desee cumplir, así mismo sirven para visitar los nodos
pertenecientes al árbol, y ejecutar alguna acción sobre el (e.g. imprimir, graficar, buscar,
etc.)

Existen 3 recorridos principales que son:


 Pre-Orden
 In-Orden
 Post-Orden
Pre-Orden (raíz – izq – der)

Para este recorrido de un árbol binario no vacío en pre-orden, realizar las siguientes
operaciones de manera recursiva en cada nodo, comenzando con el nodo raíz.
 Visitar la raíz
 Recorrer el subárbol izquierdo
 Recorrer el subárbol derecho
Pre-Orden (raíz – izq – der)

Salida:
 [A,B,D,E,C,F,G]
In-Orden (izq – raiz – der)

Para este recorrido de un árbol binario no vacío en in-orden, realizar las siguientes
operaciones de manera recursiva en cada nodo, comenzando con el nodo raíz.
 Recorrer el subárbol izquierdo
 Visitar la raíz
 Recorrer el subárbol derecho
In-Orden (izq – raiz – der)

Salida:
 [D,B,E,A,F,C,G]
Post-Orden (izq – der – raiz)

Para este recorrido de un árbol binario no vacío en post-orden, realizar las siguientes
operaciones de manera recursiva en cada nodo, comenzando con el nodo raíz.
 Recorrer el subárbol izquierdo
 Recorrer el subárbol derecho
 Visitar la raíz
Post-Orden (izq – der – raiz)

Salida:
 [D,E,B,F,G,C,A]
- Profundidad
- Anchura
+ Recorridos
Tarea #3: Fecha Entrega 03/03/2018

 Realizar una investigación del algoritmo de búsqueda en anchura/amplitud


 Realizar un video en el que se implemente en el lenguaje C/C++ (utilizando structs y punteros,
IDE QtCreator), el algoritmo mencionado anteriormente, mostrando:
 En una terminal de Linux comentar: Datos del estudiante (Nombre, Carnet), Datos del curso (Nombre,
sección, semestre, año)
 Fecha y Hora del sistema
 Indicación del algoritmo utilizado
 Breve explicación del algoritmo, estructuras utilizadas e implementación
 Compilación y ejecución del programa
 Creación del árbol que se encuentra en la SIGUIENTE DIAPOSITIVA y mostrar el resultado del recorrido
 Entregables:
 Link del video, a una plataforma en internet (Ej. Youtube)
 Via Correo (Revisar presentación 1, para instrucciones de envio)
FIN

También podría gustarte