public void Insertar(NodoBinario <T> Nuevo, T data, Delegate Comparacion)
 {
     if (Convert.ToInt16(Comparacion.DynamicInvoke(Nuevo.Data, data)) > 0)
     {
         if (Nuevo.Izquierda == null)
         {
             NodoBinario <T> NuevoNodo = new NodoBinario <T> {
                 Data = data
             };
             Nuevo.Izquierda = NuevoNodo;
         }
         else
         {
             Insertar(Nuevo.Izquierda, data, Comparacion);
         }
     }
     else if (Convert.ToInt16(Comparacion.DynamicInvoke(Nuevo.Data, data)) < 0)
     {
         if (Nuevo.Derecha == null)
         {
             NodoBinario <T> NuevoNodo = new NodoBinario <T> {
                 Data = data
             };
             Nuevo.Derecha = NuevoNodo;
         }
         else
         {
             Insertar(Nuevo.Derecha, data, Comparacion);
         }
     }
     else
     {
     }
 }
 public void Add(T data, Delegate Comparacion)
 {
     if (Padre == null)
     {
         Padre = new NodoBinario <T>()
         {
             Data = data
         };
     }
     else if (Convert.ToInt16(Comparacion.DynamicInvoke(Padre.Data, data)) < 0)
     {
         if (Padre.Derecha == null)
         {
             NodoBinario <T> NuevoNodo = new NodoBinario <T> {
                 Data = data
             };
             Padre.Derecha = NuevoNodo;
         }
         else
         {
             Insertar(Padre.Derecha, data, Comparacion);
         }
     }
     else if (Convert.ToInt16(Comparacion.DynamicInvoke(Padre.Data, data)) > 0)
     {
         if (Padre.Izquierda == null)
         {
             NodoBinario <T> NuevoNodo = new NodoBinario <T> {
                 Data = data
             };
             Padre.Izquierda = NuevoNodo;
         }
         else
         {
             Insertar(Padre.Izquierda, data, Comparacion);
         }
     }
     else
     {
     }
 }
 public ArbolBinario()
 {
     Padre = null;
 }