class Arbol: clave=None izq=None der=None class ArbolBidimensional(Arbol): def __init__(self,x,y,niv=0): self.clave=[x,y] self.niv=niv def __tab__(self,n): a="" for i in range(n): a=a+"\t" return a def __repr__(self): a="" a=a+str(self.clave)+"\n" if self.izq!=None: a=a+self.__tab__(self.izq.niv)+"Izq:" a=a+str(self.izq)+"\n" if self.der!=None: a=a+self.__tab__(self.der.niv)+"Der:" a=a+str(self.der) return a def insertar(self, x,y,hor=True): if hor==True: if self.clave[0]x: if self.izq==None: self.izq=ArbolBidimensional(x,y,self.niv+1) else: self.izq.insertar(x,y,False) else: if self.clave[0]==x and self.clave[1]==y: print "El dato "+str(x)+" "+str(y)+"ya existe" else: self.insertar(x,y,False) elif hor==False: if self.clave[1]y: if self.izq==None: self.izq=ArbolBidimensional(x,y,self.niv+1) else: self.izq.insertar(x,y,True) else: if self.clave[0]==x and self.clave[1]==y: print "El dato "+str(x)+" "+str(y)+" ya existe" else: self.insertar(x,y,True) def buscar(self,x,y,hor=True): if self.clave==[x,y]: return True else: if hor==True: if self.clave[0]x: if self.izq!=None: return self.izq.buscar(x,y,False) else: if self.clave[0]==x : return self.insertar(x,y,False) elif hor==False: if self.clave[1]y: if self.izq!=None: return self.izq.buscar(x,y,True) else: if self.clave[0]==x : return self.insertar(x,y,True) #def imprimir(self,) def recdatox(): datox=int(raw_input("Digite x: ")) return datox def recdatoy(): datoy=int(raw_input("Digite y: ")) return datoy def menu(): tmp=0 tmp2=0 opc="" arbol=None a=ArbolBidimensional(tmp, tmp2) while(opc!="0"): print "1). Insertar" print "2). Buscar" print "3). Imprimir listado" opc=raw_input("Escoja una opcion\n") if opc=="1": tmp=recdatox() tmp2=recdatoy() if arbol==None: arbol=ArbolBidimensional(tmp,tmp2) else: a.insertar(tmp,tmp2) elif opc=="2": tmp=recdatox() tmp2=recdatoy() if arbol==None: print "el arbol esta vacio" else: a.buscar(tmp, tmp2) elif opc=="3": if arbol==None: print "el arbol esta vacio" else: a.imprimir() else: pass menu()