Foros del Web » Programación para mayores de 30 ;) » .NET »

Arboles

Estas en el tema de Arboles en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/10/2015, 14:47
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años
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.
  #2 (permalink)  
Antiguo 19/10/2015, 06:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Arboles

En el while estás usando el nombre de un método como si fuese una propiedad de la clase ArbolBinarioOrdenado.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 19/10/2015, 08:58
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Arboles

Entiendo, de hecho es ahi donde me marca el error, pero tengo que que declarar otra variable para while?

Saludos.
  #4 (permalink)  
Antiguo 19/10/2015, 10:20
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Arboles

Cita:
Iniciado por Cheko1986 Ver Mensaje
Entiendo, de hecho es ahi donde me marca el error, pero tengo que que declarar otra variable para while?

Saludos.
Bueno, eso depende de lo que quieras hacer en la evaluación del while. De entrada, ese código no te tendría que compilar.

Piensa primero que quieres hacer y luego escribelo, no al revés ni sobre la marcha.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 19/10/2015, 16:43
 
Fecha de Ingreso: marzo-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Arboles

Geacias por tus comentarios, de entrada lo que necesito es que se puedan capturar valores numericos hasta que el usuario ya no desee continuar. Lo que pensaba hacer era insertar mas lines como estas

abo.Insertar(100);
abo.Insertar(50);
abo.Insertar(25);
abo.Insertar(75);
abo.Insertar(150);

Pero tendria que definirles un valor, estuve viendo ya varios ejemplos pero me marca error en el While, es ahi donde ya no se que hacer

Etiquetas: arboles, c#, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:13.