
Actividad 6
Arboles
Actividad 6


1.1Arboles generales y su representación
La definición de árboles parte del concepto de árbol general que no incluye el árbol sin ningún registro. Además se definen los conceptos básicos asociados a los árboles.
1.1.1Definición de Arboles generales
Un árbol es un conjunto de n registros(n>0), donde el árbol vacío no está definido, de tal manera que hay un registro llamado raíz y los otros registros están partidos en conjuntos disjuntos cada uno de los cuales tiene las mismas características de la definición del árbol (esta característica hace comportar la estructura árbol como recursiva).
1.1.2 Terminología de arboles
l. Las ramificaciones de cada nodo se les denomina hijos y los nodos desde donde parten las ramificaciones se denominan padres. Los registros con el mismo padre se denominan hermanos.
- Al número de ramificaciones que tiene un registro se le denomina el grado de un registro
- El grado de un árbol se determina encontrando el registro con el más grande número de ramificaciones.
- Los registros que no tienen hijos dentro del árbol se denominan hojas. Para calcular el número de hojas de un árbol ver el video en YouTube:
- El árbol tiene niveles que comienzan con el registro raíz y se denomina nivel 1 y va aumentando de a uno con la ramificación de sus hijos.
- Un registro de nivel k tiene el padre en el nivel k-1 e hijos en el nivel k+1
- Al máximo nivel alcanzado por el árbol se le denomina la altura del árbol.
- Para determinar los ancestros de un registro basta con encontrar la trayectoria desde la raíz al registro en cuestión.
- Otro nombre dado a este tipo de árboles, es árbol n-arios
Arboles Binarios Presentación con las definiciones


Documentación:
Este código en Python define una clase `Nodo` que representa los nodos de un árbol binario y una clase `Arbol` que define la estructura y las operaciones de un árbol binario de búsqueda. El programa principal permite al usuario realizar varias operaciones en el árbol binario, como agregar nodos, realizar recorridos en profundidad (inorden, preorden y postorden) y buscar un nodo en el árbol.
- La clase `Nodo` tiene tres atributos: `dato`, que almacena el valor del nodo, `li` que es una referencia al hijo izquierdo, y `ld` que es una referencia al hijo derecho.
- La clase `Arbol` tiene un atributo `raiz` que apunta a la raíz del árbol. Tiene métodos para agregar nodos al árbol, realizar recorridos en profundidad (inorden, preorden y postorden), buscar un valor en el árbol y un método principal para ejecutar el programa interactivo.
- El programa interactivo comienza solicitando al usuario que ingrese un número, que se convierte en la raíz del árbol. Luego, entra en un bucle donde ofrece varias opciones al usuario: agregar nodos al árbol, realizar diferentes recorridos en profundidad, buscar un valor en el árbol o salir del programa.
Aquí hay un resumen de lo que hace cada método en la clase `Arbol`:
- `agrego(d)`: Agrega un nuevo nodo con el valor `d` al árbol.
- `inordeno()`: Realiza un recorrido en orden (inorden) del árbol e imprime los valores de los nodos.
- `preordeno()`: Realiza un recorrido en preorden del árbol e imprime los valores de los nodos.
- `postordeno()`: Realiza un recorrido en postorden del árbol e imprime los valores de los nodos.
- `busco(d)`: Busca un valor `d` en el árbol y devuelve el nodo que contiene ese valor, si existe.
Cada vez que el usuario selecciona una opción, el programa ejecuta la operación correspondiente y luego vuelve a mostrar el menú hasta que el usuario elige salir.