Duda con Arboles y Nodos C#

Iniciado por valenchu, Agosto 02, 2021, 03:03:19 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 02, 2021, 03:03:19 PM Ultima modificación: Agosto 02, 2021, 09:20:48 PM por AXCESS
Clase nodo

Clase arbol binario
Código: php
 public class ArbolBinarioOrdenado
    {
        private Nodo raiz;
        public ArbolBinarioOrdenado()
        {
            raiz = null;
        }

        public void insertar(int dato)
        {
            Nodo nuevo = new Nodo();
            nuevo.Info = dato;
            nuevo.Der = null;
            nuevo.Izq = null;
            if(raiz == null)
            {
                  raiz = nuevo;
            }
            else
            {
                Nodo anterior = null;
                Nodo reco = null;
                reco = raiz;
               
                while (reco != null)
                {
                    anterior = reco;
                    if (dato < reco.Info)
                    {
                        reco = reco.Izq;
                    }
                    else
                    {
                        reco = reco.Der;
                    }
                }
                if (dato < 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 imprimirPost(Nodo reco)
        {
            if (reco != null)
            {
                imprimirPost(reco.Izq);
                imprimirPost(reco.Der);
                Console.Write(reco.Info + " ");
            }
        }
        public void imprimirPost()
        {
            imprimirPost(raiz);
            Console.WriteLine();
        }
    }
}

No termino de entender como funciona el método insertar. Si alguien que la tenga super clara con listas nodos y pilas me explique el método insertar paso a paso lo mejor que pueda, lo super agradecería. Hasta el While mas o menos lo entiendo. Pero en el While con reco y anterior no comprendo que hace.
Saludos y gracias  :-*