Exemple #1
0
 def ADD(self, nodo, clave):
     if (clave == ''):
         nodo.cant += 1
         return
     
     act = clave[0]
     clave = clave[1:]
     if act == 'A':
         if nodo.izq == None:
             nodo.izq = baseN()
         self.ADD(nodo.izq, clave)
     
     if act == 'T':
         if nodo.der == None:
             nodo.der = baseN()
         self.ADD(nodo.der, clave)
Exemple #2
0
 def SET(self, nodo, clave, cantidad):
     if cantidad == 0:
         self.DELETE(nodo, clave)
     if (clave == ''):
         nodo.cant = cantidad
         return False
         
     act = clave[0]
     clave = clave[1:]
     if act == 'A':
         if(nodo.izq == None):
             nodo.izq = baseN()
         self.SET(nodo.izq, clave, cantidad)
     
     if act == 'T':
         if(nodo.der == None):
             nodo.der = baseN()
         self.SET(nodo.der, clave, cantidad)
Exemple #3
0
 def CHANGE(self, secO, secD):
    #Chequeo de precondicion
    aux = self.raiz
    pre = False
    for i in secD:
        if(i == 'A'):
            aux = aux.izq
        elif(i == 'T'):
            aux = aux.der
        if(aux == None):
            pre = True
            break
    if(pre):
        nodo_O = self.raiz
        padre_D = self.raiz
        for i in secO[:-1]:
            if(i == 'A'):
                nodo_O = nodo_O.izq
            elif(i == 'T'):
                nodo_O = nodo_O.der
        if(secO[-1] == 'A'):
            aux = nodo_O
            nodo_O = nodo_O.izq
            aux.izq = None
        elif(secO[-1] == 'T'):
            aux = nodo_O
            nodo_O = nodo_O.der
            aux.der = None
        for i in secD[:-1]:
            if(i == 'A'):
                if(padre_D.izq == None):
                    padre_D.izq = baseN()
                padre_D = padre_D.izq
            elif(i == 'T'):
                if(padre_D.der == None):
                    padre_D.der = baseN()
                padre_D = padre_D.der
        if(secD[-1] == 'A'):
            padre_D.izq = nodo_O
        elif(secD[-1] == 'T'):
            padre_D.der = nodo_O
    else:
        self.PRINT("ERROR: Cannot CHANGE. Use CHANGEMERGE instead.")
Exemple #4
0
 def UnionA(self, nodo1, nodo2):
     raiz = baseN()
     cant = 0
     if(nodo1 != None):
         cant += nodo1.cant
     if(nodo2 != None):
         cant += nodo2.cant
     raiz.cant = cant
     if(nodo1 == None and nodo2 == None):
         return None
     elif(nodo1 != None and nodo2 == None):
         raiz.izq = nodo1.izq
         raiz.der = nodo1.der
     elif(nodo1 == None and nodo2 != None):
         raiz.izq = nodo2.izq
         raiz.der = nodo2.der
     else:
         raiz.izq = self.UnionA(nodo1.izq, nodo2.izq)
         raiz.der = self.UnionA(nodo1.der, nodo2.der)
     return raiz
Exemple #5
0
 def __init__(self):
     self.raiz = baseN()