public static List <ArbolResultante> ImprimirArbol(NodoDTO resultado, string lado, List <ArbolResultante> ListaResultante) { if (resultado == null) { return(ListaResultante); } var arbolResultante = new ArbolResultante(); arbolResultante.Lado = lado; arbolResultante.Valor = resultado.Dato; ListaResultante.Add(arbolResultante); if (resultado.ParIzquierda != null) { lado = "Izquierdo"; ImprimirArbol(resultado.ParIzquierda, lado, ListaResultante); } if (resultado.ParDerecha != null) { lado = "Derecho"; ImprimirArbol(resultado.ParDerecha, lado, ListaResultante); } return(ListaResultante); }
public async Task <NodoDTO> CrearArbol(int[] lista) { var tempArbol = await Insertar(lista[0], null); var resultado = new NodoDTO(); for (int i = 1; i < lista.Length; i++) { resultado = await Insertar(lista[i], tempArbol); } return(resultado); }
public List <NodoDTO> FindFacebookPlaces(double lat, double lng, string texto) { var client = new FacebookClient(ConfigurationManager.AppSettings["AppFbToken"]); dynamic places = client.Get("search?type=place&q=" + texto + "¢er=" + lat + "," + lng + "&distance=1500&fields=id,name,location") as IDictionary <string, object>; List <NodoDTO> lista = new List <NodoDTO>(); foreach (var item in places["data"]) { NodoDTO obj = new NodoDTO(); obj.sId = item["id"]; obj.Nombre = item["name"]; obj.Direccion_Latitud = Convert.ToString((item["location"])["latitude"]); obj.Direccion_Longitud = Convert.ToString((item["location"])["longitude"]); lista.Add(obj); } return(lista); }
public async Task <IActionResult> GetAncestroRaiz(NodoModel infoArbol, int nodo1, int nodo2) { try { var nodo = new NodoDTO() { Dato = infoArbol.Dato, ParDerecha = infoArbol.ParDerecha, ParIzquierda = infoArbol.ParIzquierda }; var result = await arbol.BuscarAncestroArbol(nodo, nodo1, nodo2); return(Ok("Ancestro mas cercano es:" + result)); } catch (Exception) { return(BadRequest("Error al buscar el ancestro")); } }
public async Task <int> BuscarAncestroArbol(NodoDTO TodoArbol, int nodo1, int nodo2) { int tempPadre = TodoArbol.Dato; if (nodo1 > tempPadre && nodo2 > tempPadre) { if (TodoArbol.ParDerecha != null) { return(await BuscarAncestroArbol(TodoArbol.ParDerecha, nodo1, nodo2)); } } if (nodo1 < TodoArbol.Dato && nodo2 < TodoArbol.Dato) { if (TodoArbol.ParDerecha != null) { return(await BuscarAncestroArbol(TodoArbol.ParIzquierda, nodo1, nodo2)); } } return(tempPadre); }
private async Task <NodoDTO> Insertar(int dato, NodoDTO nodo) { if (nodo == null) { return(new NodoDTO { Dato = dato, ParDerecha = null, ParIzquierda = null }); } if (dato > nodo.Dato) { nodo.ParDerecha = await Insertar(dato, nodo.ParDerecha); } if (dato < nodo.Dato) { nodo.ParIzquierda = await Insertar(dato, nodo.ParIzquierda); } return(nodo); }