Tema: Arboles
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2015, 14:47
Cheko1986
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Exclamación Arboles

Que tal expertos

Sigo en mi aprendizaje en esto de C#, el siguiente codigo lo tengo que modificar para que haga lo siguiente:

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

-Devolver los valores capturados en recorrido preorden, entreorden y postorden.

Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ArbolBinarioOrdenado1
  7. {
  8.     public class ArbolBinarioOrdenado
  9.     {
  10.         class Nodo
  11.         {
  12.             public int info;
  13.             public Nodo izq, der;
  14.         }
  15.         Nodo raiz;
  16.  
  17.         public ArbolBinarioOrdenado()
  18.         {
  19.             raiz = null;
  20.         }
  21.  
  22.         public void Insertar(int info)
  23.         {
  24.             Nodo nuevo;
  25.             nuevo = new Nodo();
  26.             nuevo.info = info;
  27.             nuevo.izq = null;
  28.             nuevo.der = null;
  29.             if (raiz == null)
  30.                 raiz = nuevo;
  31.             else
  32.             {
  33.                 Nodo anterior = null, reco;
  34.                 reco = raiz;
  35.                 while (reco != null)
  36.                 {
  37.                     anterior = reco;
  38.                     if (info < reco.info)
  39.                         reco = reco.izq;
  40.                     else
  41.                         reco = reco.der;
  42.                 }
  43.                 if (info < anterior.info)
  44.                     anterior.izq = nuevo;
  45.                 else
  46.                     anterior.der = nuevo;
  47.             }
  48.         }
  49.  
  50.  
  51.         private void ImprimirPre(Nodo reco)
  52.         {
  53.             if (reco != null)
  54.             {
  55.                 Console.Write(reco.info + " ");
  56.                 ImprimirPre(reco.izq);
  57.                 ImprimirPre(reco.der);
  58.             }
  59.         }
  60.  
  61.         public void ImprimirPre()
  62.         {
  63.             ImprimirPre(raiz);
  64.             Console.WriteLine();
  65.         }
  66.  
  67.         private void ImprimirEntre(Nodo reco)
  68.         {
  69.             if (reco != null)
  70.             {
  71.                 ImprimirEntre(reco.izq);
  72.                 Console.Write(reco.info + " ");
  73.                 ImprimirEntre(reco.der);
  74.             }
  75.         }
  76.  
  77.         public void ImprimirEntre()
  78.         {
  79.             ImprimirEntre(raiz);
  80.             Console.WriteLine();
  81.         }
  82.  
  83.  
  84.         private void ImprimirPost(Nodo reco)
  85.         {
  86.             if (reco != null)
  87.             {
  88.                 ImprimirPost(reco.izq);
  89.                 ImprimirPost(reco.der);
  90.                 Console.Write(reco.info + " ");
  91.             }
  92.         }
  93.  
  94.  
  95.         public void ImprimirPost()
  96.         {
  97.             ImprimirPost(raiz);
  98.             Console.WriteLine();
  99.         }
  100.  
  101.         static void Main(string[] args)
  102.         {
  103.             ArbolBinarioOrdenado abo = new ArbolBinarioOrdenado();
  104.             abo.Insertar(100);
  105.             abo.Insertar(50);
  106.             abo.Insertar(25);
  107.             abo.Insertar(75);
  108.             abo.Insertar(150);
  109.             Console.WriteLine("Impresion preorden: ");
  110.             abo.ImprimirPre();
  111.             Console.WriteLine("Impresion entreorden: ");
  112.             abo.ImprimirEntre();
  113.             Console.WriteLine("Impresion postorden: ");
  114.             abo.ImprimirPost();
  115.             Console.ReadKey();
  116.         }
  117.     }
  118. }


Y por supuesto he estado intentando resolverlo, pero ya me quede trabado, lo he querido remplazar con do-while para resolverlo, pero me manda error, se que es solo una cosa muy simple y quisiera que me ayudaran a ver donde tengo el error o me corrijan donde esta mal mi codigo, les presento los avances y cambios que le hice para tratar de resolverlo:

Código C:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ArbolBinarioOrdenado1
  7. {
  8.     public class ArbolBinarioOrdenado
  9.     {
  10.         class Nodo
  11.         {
  12.             public int info;
  13.             public Nodo izq, der;
  14.         }
  15.         Nodo raiz;
  16.  
  17.         public ArbolBinarioOrdenado()
  18.         {
  19.             raiz = null;
  20.         }
  21.  
  22.         public void Insertar(int info)
  23.         {
  24.             Nodo nuevo;
  25.             nuevo = new Nodo();
  26.             nuevo.info = info;
  27.             nuevo.izq = null;
  28.             nuevo.der = null;
  29.             if (raiz == null)
  30.                 raiz = nuevo;
  31.             else
  32.             {
  33.                 Nodo anterior = null, reco;
  34.                 reco = raiz;
  35.                 while (reco != null)
  36.                 {
  37.                     anterior = reco;
  38.                     if (info < reco.info)
  39.                         reco = reco.izq;
  40.                     else
  41.                         reco = reco.der;
  42.                 }
  43.                 if (info < anterior.info)
  44.                     anterior.izq = nuevo;
  45.                 else
  46.                     anterior.der = nuevo;
  47.             }
  48.         }
  49.  
  50.  
  51.         private void ImprimirPre(Nodo reco)
  52.         {
  53.             if (reco != null)
  54.             {
  55.                 Console.Write(reco.info + " ");
  56.                 ImprimirPre(reco.izq);
  57.                 ImprimirPre(reco.der);
  58.             }
  59.         }
  60.  
  61.         public void ImprimirPre()
  62.         {
  63.             ImprimirPre(raiz);
  64.             Console.WriteLine();
  65.         }
  66.  
  67.         private void ImprimirEntre(Nodo reco)
  68.         {
  69.             if (reco != null)
  70.             {
  71.                 ImprimirEntre(reco.izq);
  72.                 Console.Write(reco.info + " ");
  73.                 ImprimirEntre(reco.der);
  74.             }
  75.         }
  76.  
  77.         public void ImprimirEntre()
  78.         {
  79.             ImprimirEntre(raiz);
  80.             Console.WriteLine();
  81.         }
  82.  
  83.  
  84.         private void ImprimirPost(Nodo reco)
  85.         {
  86.             if (reco != null)
  87.             {
  88.                 ImprimirPost(reco.izq);
  89.                 ImprimirPost(reco.der);
  90.                 Console.Write(reco.info + " ");
  91.             }
  92.         }
  93.  
  94.  
  95.         public void ImprimirPost()
  96.         {
  97.             ImprimirPost(raiz);
  98.             Console.WriteLine();
  99.         }
  100.  
  101.         static void Main(string[] args)
  102.         {
  103.             ArbolBinarioOrdenado abo = new ArbolBinarioOrdenado();
  104.             do
  105.             {
  106.                 string texto = Console.ReadLine();
  107.                 if (texto != "") abo.Insertar(Convert.ToInt32(texto));
  108.             }
  109.             while(abo.Insertar);
  110.  
  111.             Console.WriteLine("Impresion preorden: ");
  112.             abo.ImprimirPre();
  113.             Console.WriteLine("Impresion entreorden: ");
  114.             abo.ImprimirEntre();
  115.             Console.WriteLine("Impresion postorden: ");
  116.             abo.ImprimirPost();
  117.             Console.ReadKey();
  118.         }
  119.     }
  120. }


Espero puedan auxiliarme a resolver.

Saludos.