In [26]:
class NodoBB:
izq , der, dato = None, None, 0
def __init__(self, dato):
self.izq = None
self.der = None
self.dato = dato
class ArbolBB:
def __init__(self):
self.raiz = None
def agregarNodo(self, dato):
# crea un nuevo nodo y lo devuelve
return Nodo(dato)
def insertar(self, dato):
# Funcion de ayuda (anónima) y recursiva para recorrer el Arbol
def recorrer(nodo):
if dato < nodo.dato:
if nodo.izq is None:
nodo.izq = NodoBB(dato)
else:
recorrer(nodo.izq)
# Entonces el dato a insertar es mayor que el nodo actual
elif nodo.der is None:
nodo.der = NodoBB(dato)
else:
recorrer(nodo.der)
# Si el árbol está vacio inserta un dato nuevo en el árbol
if self.raiz is None:
self.raiz = NodoBB(dato)
else:
# si hay nodos en el árbol lo recorre
recorrer(self.raiz)
def __str__(self):
""" Presentacion en formato string """
def recorrer(nodo, nivel):
s = ""
if nodo is not None:
if nodo == self.raiz:
s = str(self.raiz.dato) + "\n"
else:
s = (" " * (nivel - 1)) + ("|__") + str(nodo.dato) + "\n"
s += recorrer(nodo.izq, nivel + 1)
s += recorrer(nodo.der, nivel + 1)
return s
return recorrer(self.raiz, 0)
def buscar(self, dato):
pass
In [27]:
arbol = ArbolBB()
arbol.insertar('D')
arbol.insertar('B')
arbol.insertar('A')
arbol.insertar('C')
arbol.insertar('F')
arbol.insertar('E')
arbol.insertar('G')
print (arbol)
In [11]:
arbol.raiz.der.dato
Out[11]: