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 originalusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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();
}
}
}
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 originalusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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();
do
{
string texto = Console.ReadLine();
if (texto != "") abo.Insertar(Convert.ToInt32(texto));
}
while(abo.Insertar);
Console.WriteLine("Impresion preorden: ");
abo.ImprimirPre();
Console.WriteLine("Impresion entreorden: ");
abo.ImprimirEntre();
Console.WriteLine("Impresion postorden: ");
abo.ImprimirPost();
Console.ReadKey();
}
}
}
Espero puedan auxiliarme a resolver.
Saludos.