예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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 + "&center=" + 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"));
            }
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }