All pastes #230720 Raw Edit

Miscellany

public text v1 · immutable
#230720 ·published 2006-10-31 12:05 UTC
rendered paste body
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.der==None:                    
                    self.der=ArbolBidimensional(x,y,self.niv+1)                    
                else:
                    self.der.insertar(x,y,False)
            elif 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.der==None:
                    self.der=ArbolBidimensional(x,y,self.niv+1)                    
                else:
                    self.der.insertar(x,y,True)
            elif 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.der!=None:
                        return self.der.buscar(x,y,False)
			print clave [x,y]
                elif 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.der!=None:
                        return self.der.buscar(x,y,True)
                elif 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()