Пример #1
0
    public BSNode search(float data)
    {
        Queue <BSNode> qs  = new Queue <BSNode>();
        BSNode         tmp = padre;

        while (!tmp.Equals(null))
        {
            qv.Enqueue(tmp);
            if (tmp.getData().Equals(data))
            {
                resetVisitados();
                return(tmp);
            }
            else if (tmp.visitado != true)
            {
                tmp.visitado = true;
                foreach (BSNode adyacente in tmp.adyacentes)
                {
                    qs.Enqueue(adyacente);
                    qv.Enqueue(adyacente);
                }
            }
            if (qs.Peek().Equals(null))
            {
                resetVisitados();
                return(null);
            }
            tmp = qs.Peek();
            qs.Dequeue();
        }
        return(null);
    }
Пример #2
0
    public BSNode searchPadre(BSNode head, float data)
    {
        BSNode tmp = head;

        while (!tmp.Equals(null))
        {
            qv.Enqueue(tmp);
            if (tmp.visitado.Equals(false))
            {
                tmp.visitado = true;
                foreach (BSNode adyacente in tmp.adyacentes)
                {
                    adyacente.visitado = true;
                    qv.Enqueue(adyacente);
                    if (adyacente.getData().Equals(data))
                    {
                        resetVisitados();
                        tmp = adyacente;
                        return(tmp);
                    }
                }
                resetVisitados();
                return(null);
            }
        }
        return(null);
    }