Blog
Árboles en Python
- Publicado por: Rafael Fernandez
- Categoría: Blog Principiante Python
No hay comentarios
En Ciencias de la computación, un árbol es una estructura de datos que imita la estructura de un árbol al revés: La raíz está en la parte superior y sub-árboles con nodos superiores. Los nodos descendientes o inferiores son llamados nodos hoja. Un árbol es un tipo de Grafo que no tiene ciclos.
Python no tiene soporte para árboles incorporado.
Árbol Binario en Python
Un árbol binario es un árbol que tiene máximo dos nodos descendientes (izquierdo y derecho). Se define una clase llamada ‘Arbol’
class Arbol(object): def __init__(self): self.der = None # Rama derecha del árbol self.izq = None # Rama izquierda del árbol self.dato = None # Dato del nodo del árbol raiz = Arbol() raiz.dato = 'Raiz' raiz.izq = Arbol() raiz.izq.dato = 'Izquierda' raiz.der = Arbol() raiz.der.dato = 'Derecha' print(raiz.izq.dato)
De esta misma forma se puede ir aumentando el tamaño del árbol y agregándole mas información:
class Arbol(object): def __init__(self): self.der = None self.izq = None self.dato = None raiz = Arbol() raiz.dato = 'Raiz' raiz.izq = Arbol() raiz.izq.dato = 'Izquierda' raiz.der = Arbol() raiz.der.dato = 'Derecha' raiz.izq.izq = Arbol() raiz.izq.izq.dato = 'Izquierda 2' raiz.izq.der = Arbol() raiz.izq.der.dato = 'Izquierda - Derecha'
Lógicamente, si se quiere definir un árbol que no sea binario, entonces se aumentan las posibles ramas en ‘__init__’:
class Arbol(object): def __init__(self): self.der = None self.der2 = None self.cent = None self.izq = None self.izq2 = None self.dato = None
Y así de forma sucesiva.
Autor:Rafael Fernandez
Empezé estudiando Física aunque mas tarde me decanté por la Ingeniería. Después de hacer un master de Hidráulica (esp. Aero-hidrodinámica de Vehículos) comenzé el PhD en Ingeniería. Hoy en día me encuentro trabajando para la empresa ITK Engineering AG como ingeniero de desarrollo. Entre mi pasiones está el desarrollo e implementación de todo tipo de códigos en Python y otros lenguages.
Puedes visitar mi perfil en <a href="https://www.linkedin.com/in/rafaelfernandezperfil/">Linkedin.<a>