none
arbol binario en c# AYUDA PORFAVOR ! URGE RRS feed

  • Pregunta

  • Tengo este arbol binario de caracteres . pero mi funsion inorden (NO RECURSIVA) solo imprime el primer nodo
    que esta mal?

     static void meterpila(Nodo pila, Nodo p)
            {
                p.siguiente = pila;
                pila = p;
            }
    
          static  Nodo sacarpila(Nodo pila,Nodo p)
            {
                p = pila;
                pila = pila.siguiente;
                return p;
            }
    
            static void inorden(Nodo raiz,Nodo pila)
            {
                Nodo p=raiz;
                Nodo q=raiz;
    
                while(q.der!=null)
                {
                    q = q.der;
                }
                while(p!=q)
                {
                    while (p != null)
                    {
                        meterpila(pila, p);
                        p = p.izq;
                    }
                        p = sacarpila(pila, p);
                        Console.Write("{0}", raiz.RFC);
                    Console.Write("\t{0}\t", raiz.NOM);
                    Console.Write("\t{0}\t", raiz.APP);
                    Console.Write("\t{0}\t", raiz.APM);
                    Console.Write("\t{0}\t", raiz.DEP);
                    Console.Write("\t{0}", raiz.SAL);
                    p = p.der;
                }
                Console.Write("{0}", raiz.RFC);
                Console.Write("\t{0}\t", raiz.NOM);
                Console.Write("\t{0}\t", raiz.APP);
                Console.Write("\t{0}\t", raiz.APM);
                Console.Write("\t{0}\t", raiz.DEP);
                Console.Write("\t{0}", raiz.SAL);
            }

    martes, 2 de mayo de 2017 2:52

Respuestas

  • hola

    Recuerda que si comparas objetos debes implementar la interfaz IEquatable<>, ya que si haces esto

    while(p!=q)

    siempre seran diferentes, porque compara por referencia y no por valor

    [.NET] Mis interfaces favoritos: IEquatable

    Ademas podrias definir un breakpoint en el codigo he ir ejecutando paso a paso para ver que valor toman las variables y analizar porque no ingresa en el while

    Algo que veo es que en el Console.Write() usa la variable "raiz" pero no deberias cambiar esto? y usar a "p" o "q" ? porque son las que usas mientras iteras en el while, como ser

     Console.Write("{0}", p.RFC);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 2 de mayo de 2017 11:16

Todas las respuestas

  • hola

    Recuerda que si comparas objetos debes implementar la interfaz IEquatable<>, ya que si haces esto

    while(p!=q)

    siempre seran diferentes, porque compara por referencia y no por valor

    [.NET] Mis interfaces favoritos: IEquatable

    Ademas podrias definir un breakpoint en el codigo he ir ejecutando paso a paso para ver que valor toman las variables y analizar porque no ingresa en el while

    Algo que veo es que en el Console.Write() usa la variable "raiz" pero no deberias cambiar esto? y usar a "p" o "q" ? porque son las que usas mientras iteras en el while, como ser

     Console.Write("{0}", p.RFC);

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 2 de mayo de 2017 11:16
  • gracias , corregí o ultimo que tenías razón si era p.rfc 
    pero la interfaz que me dices ni idea . y sigue haciendo lo mismo de imprimir solo el primer nodo.
    ese codigo lo tengo igual en un programa en C y lo pase a c# pero parece que es distinto.. en mi programa en c funsion muy bien pero aquí ya no.. aparte que en el de c lo uso con numeros
    martes, 2 de mayo de 2017 22:22