Cómo puedo llenar y recorrer un árbol en C# recursivamente

Estoy desarrollando una aplicación para entrenar ajedrez. La idea es cargar un archivo PGN Portable Game Notation (no PNG que es formato imagen), que es un archivo donde se almacenan los datos de una partida y además las movidas.

Cada jugada puede tener cero, una o más variaciones. Estoy hecho un lío para llenar el árbol y luego para recorrerlo.

A continuación la clase que he creado:

public class Movida 
    {
        private int numeroMovida;
        private string algebraicMove;
        private int token;
        private string comentario;
        private List<Movida> variaciones = new List<Movida>();        
        public Movida(int numeroMovida, string algebraicMove, int token, string comentario, List<Movida> variaciones) {
            this.numeroMovida = numeroMovida;
            this.algebraicMove = algebraicMove;
            this.token = token;
            this.comentario = comentario;
            this.variaciones = null;
        }
        public void agregarMovida(Movida movida) {
            variaciones.Add(movida);
        }
        public List<Movida> obtenerVariaciones() {
            return variaciones;
        }
    }

Creo que necesito hacer una función para ingresar llenar el árbol recursivamente, igual para obtener las movidas de vuelta. Cualquier ayuda se agradece.

1 Respuesta

Respuesta

Si entendí bien lo que quieres es una clase que le pases un parámetro y lo llene dentro de un árbol o algo parecido

Exactamente, cómo podría llenar el árbol y luego recorrerlo para sacar las movidas

Primero creas una Clase que contenga los datos que necesitas de la jugada por ejemplo:

public class Contenedor
{
    private int Valor1_;
    private int Valor2_;
    public Contenedor Rec1;
    public Contenedor Rec2;
    public Class1()
    {
        Valor1_ = 1;
        Valor2_ = 1;}
    public int Valor1
    {
        get
        {
            return Valor1_;}
        set
        {
            Valor1_ = value;}}
    public int Valor2
        {
        get
        {
            return Valor2_;}
        set
        {
            Valor2_ = value;}}
}

Con eso podras crear un arbol que tenga 2 sub ramas y casa uno podria tener las mismas subramas o podrias poner un arreglo del contenedor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas