Skip to content

Instantly share code, notes, and snippets.

@fgaray
Created April 23, 2013 22:04
Show Gist options
  • Save fgaray/5447813 to your computer and use it in GitHub Desktop.
Save fgaray/5447813 to your computer and use it in GitHub Desktop.
Ejemplo de algoritmo de búsqueda en el arbol trinario para el lab de orga
struct Nodo{
Informacion *info;
Nodo *pi, *pd;
};
struct Informacion{
int next_hop;
int interface;
};
// llamar con
rec(raiz, raiz, 31);
Nodo *rec(Nodo *ultimo_valido, Nodo *nodo_actual, int b)
{
if(b == -1)
{
// no hay más bits que comparar
return ultimo_valido;
}
if(el bit en la posicion b es 1)
{
//debemos movernos a la derecha
if(nodo_actual -> pd == NULL)
{
//no nos podemos mover a la derecha por lo que debemos
//devolver el ultimo valido
return ultimo_valido;
}else{
//nos podemos mover a la derecha
if(nodo_actual -> info == NULL)
{
//este nodo no es valido, por lo tanto nos
//quedamos con el ultimo valio
return rec(ultimo_valido, nodo_actual -> pd, b - 1);
}else{
//este nodo es valido, por lo que debemos
//actualizar el ultimo nodo valido
return rec(nodo_actual, nodo_actual -> pd, b - 1);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment