from re import X class Nodo: def __init__(self, dato): self.dato = dato self.izquierda = None self.derecha = None self.centro = None class Arbol: def __init__(self, dato): self.raiz = Nodo(dato) def __agregar_recursivo(self, nodo, base): if base == nodo.dato: if nodo.izquierda == None: dato = input('Ingrese el hijo: ') nodo.izquierda = Nodo(dato) else: if nodo.derecha == None: dato = input('Ingrese el hijo: ') nodo.derecha = Nodo(dato) else: if nodo.centro == None: dato = input('Ingrese el hijo: ') nodo.centro = Nodo(dato) else: if nodo.izquierda != None: self.__agregar_recursivo(nodo.izquierda, base) else: if nodo.derecha != None: self.__agregar_recursivo(nodo.derecha, base) else: if nodo.centro != None: self.__agregar_recursivo(nodo.centro, base) def __inorden_recursivo(self, nodo): if nodo != None: self.__inorden_recursivo(nodo.izquierda) print(nodo.dato, end="--->") self.__inorden_recursivo(nodo.derecha) print(nodo.dato, end="--->") self.__inorden_recursivo(nodo.centro) print(nodo.dato, end="--->") def __preorden_recursivo(self, nodo): if nodo != None: print(nodo.dato, end="--->") self.__preorden_recursivo(nodo.izquierda) self.__preorden_recursivo(nodo.centro) self.__preorden_recursivo(nodo.derecha) def __postorden_recursivo(self, nodo): if nodo != None: self.__postorden_recursivo(nodo.izquierda) self.__postorden_recursivo(nodo.centro) self.__postorden_recursivo(nodo.derecha) print(nodo.dato, end="--->") # Funciones públicas def agregar(self, base): self.__agregar_recursivo(self.raiz, base) def inorden(self): print("Imprimiendo árbol Inorden: ") self.__inorden_recursivo(self.raiz) print("") def preorden(self): print("Imprimiendo árbol Preorden: ") self.__preorden_recursivo(self.raiz) print("") def postorden(self): print("Imprimiendo árbol Postorden: ") self.__postorden_recursivo(self.raiz) print("") def menu(): j = 0 opcion = 0 while opcion != 3: print(''' MENU 1. Agregar 2. Imprimir 3. Buscar 4. Salir ''') opcion = int(input('Seleccione una opcion: ' )) if opcion == 1: if j == 0: dato = input('Ingrese la raiz: ') arbol = Arbol(dato) j = j + 1 else: base = input(' ¿A que padre desea agregarle un hijo? ') arbol.agregar(base) elif opcion == 2: arbol.preorden() arbol.inorden() arbol.postorden() if __name__ == '__main__': menu()