[ Foro de C# ]

arbol binario

14-Oct-2016 20:03
Invitado (thunder)
0 Respuestas

Hola cuento con este codigo de un arbol binario  sin embargo tengo que realizar lo siguiente:

Alguien me podria orientar

Solicitar al usuario la captura de valores numéricos de manera repetitiva hasta que el usuario ya no desee continuar con esta operación

Tomando como base el método "preorden", codifique los métodos para generar los recorridos "etreorden" y "postorden".
Devolver los valores capturados en los recorridos preorden (proporcionado), entreorden y postorden (codificados).

namespace ArbolBinarioOrdenado1
{
   public class ArbolBinarioOrdenado
   {
       class Nodo
       {
           public int info;
           public Nodo izq, der;
       }
       Nodo raiz;

       public ArbolBinarioOrdenado()
       {
           raiz = null;
       }

       public void Insertar(int info)
       {
           Nodo nuevo;
           nuevo = new Nodo();
           nuevo.info = info;
           nuevo.izq = null;
           nuevo.der = null;
           if (raiz == null)
               raiz = nuevo;
           else
           {
               Nodo anterior = null, reco;
               reco = raiz;
               while (reco != null)
               {
                   anterior = reco;
                   if (info < reco.info)
                       reco = reco.izq;
                   else
                       reco = reco.der;
               }
               if (info < anterior.info)
                   anterior.izq = nuevo;
               else
                   anterior.der = nuevo;
           }
       }


       private void ImprimirPre(Nodo reco)
       {
           if (reco != null)
           {
               Console.Write(reco.info + " ");
               ImprimirPre(reco.izq);
               ImprimirPre(reco.der);
           }
       }

       public void ImprimirPre()
       {
           ImprimirPre(raiz);
           Console.WriteLine();
       }

       private void ImprimirEntre(Nodo reco)
       {
           if (reco != null)
           {
               ImprimirEntre(reco.izq);
               Console.Write(reco.info + " ");
               ImprimirEntre(reco.der);
           }
       }

       public void ImprimirEntre()
       {
           ImprimirEntre(raiz);
           Console.WriteLine();
       }


       private void ImprimirPost(Nodo reco)
       {
           if (reco != null)
           {
               ImprimirPost(reco.izq);
               ImprimirPost(reco.der);
               Console.Write(reco.info + " ");
           }
       }


       public void ImprimirPost()
       {
           ImprimirPost(raiz);
           Console.WriteLine();
       }

       static void Main(string[] args)
       {
           ArbolBinarioOrdenado abo = new ArbolBinarioOrdenado();
           abo.Insertar(100);
           abo.Insertar(50);
           abo.Insertar(25);
           abo.Insertar(75);
           abo.Insertar(150);
           Console.WriteLine("Impresion preorden: ");
           abo.ImprimirPre();
           Console.WriteLine("Impresion entreorden: ");
           abo.ImprimirEntre();
           Console.WriteLine("Impresion postorden: ");
           abo.ImprimirPost();
           Console.ReadKey();
       }
   }
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)