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
using 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 original
using 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.