public int Mayor(NodoPrioridad <T> a, NodoPrioridad <T> b) { if (a != null && b != null) { if (a.Altura > b.Altura) { return(a.Altura); } else { return(b.Altura); } } else if (a != null) { return(a.Altura); } else if (b != null) { return(b.Altura); } else { return(0); } }
void Delete(NodoPrioridad <T> Raiz, NodoPrioridad <T> Sig, Delegate Condicion) { if (Sig != null) { int Comparacion = Convert.ToInt32(Condicion.DynamicInvoke(Sig.Izquierda.Data, Raiz.Data)); if (Comparacion == 0) { BuscarEliminar(Raiz, Sig, Condicion); Sig.Izquierda = null; } else { int Compa = Convert.ToInt32(Condicion.DynamicInvoke(Sig.Derecha.Data, Raiz.Data)); if (Compa == 0) { BuscarEliminar(Raiz, Sig, Condicion); Sig.Derecha = null; } else { Delete(Raiz, Sig.Siguiente, Condicion); } } } }
public void Insertar(NodoPrioridad <T> nuevo, NodoPrioridad <T> n, Delegate Comparacion) { if (n != null) { int compar = Convert.ToInt16(Comparacion.DynamicInvoke(nuevo.Data, n.Data)); if (compar == 0) { } else if (compar > 0) { if (n.Derecha != null) { Insertar(nuevo, n.Derecha, Comparacion); n.Altura = Mayor(n.Derecha, n.Izquierda) + 1; } else { n.Derecha = nuevo; nuevo.Padre = n; n.Altura = Mayor(n.Derecha, n.Izquierda) + 1; } } else { if (n.Izquierda != null) { Insertar(nuevo, n.Izquierda, Comparacion); n.Altura = Mayor(n.Derecha, n.Izquierda) + 1; } else { n.Izquierda = nuevo; nuevo.Padre = n; n.Altura = Mayor(n.Derecha, n.Izquierda) + 1; } } } int balanceo = Balanceo(n); if (balanceo > 1) { balanceo = Balanceo(n.Derecha); if (balanceo == -1) { RotacionDer(n.Derecha); } RotacionIzq(n); } else if (balanceo < -1) { balanceo = Balanceo(n.Izquierda); if (balanceo == 1) { RotacionIzq(n.Izquierda); } RotacionDer(n); } }
void BuscarEliminar(NodoPrioridad <T> Raiz, NodoPrioridad <T> Sig, Delegate Condicion) { int Comparar = Convert.ToInt32(Condicion.DynamicInvoke(Sig.Siguiente.Data, Raiz.Data)); if (Comparar == 0) { Sig.Siguiente = null; } else { BuscarEliminar(Raiz, Sig.Siguiente, Condicion); } }
void BuscarValorUltimo(NodoPrioridad <T> Raiz) { if (Raiz != null) { if (Raiz.Siguiente == null) { Ultimo = Raiz; } else { BuscarValorUltimo(Raiz.Siguiente); } } }
void InsertarNuevoSiguiente(NodoPrioridad <T> Nuevo, NodoPrioridad <T> Raiz) { if (Raiz != null) { if (Raiz.Siguiente == null) { Raiz.Siguiente = Nuevo; Ultimo = Nuevo; } else { InsertarNuevoSiguiente(Nuevo, Raiz.Siguiente); } } }
public T returnNode(Delegate Condicion, T Default) { if (Primero != null) { T Apoyo = Primero.Data; Primero.Data = Ultimo.Data; if (Primero.Siguiente != null) { int Comparacion = Convert.ToInt32(Condicion.DynamicInvoke(Primero.Siguiente.Data, Primero.Data)); if (Comparacion == 0) { int Compa = Convert.ToInt32(Condicion.DynamicInvoke(Primero.Izquierda.Data, Primero.Data)); if (Compa == 0) { Primero.Izquierda = null; Primero.Siguiente = null; } else { } } else { int Cont = Convert.ToInt32(Condicion.DynamicInvoke(Primero.Derecha.Data, Primero.Data)); if (Cont == 0) { Primero.Derecha = null; Primero.Izquierda.Siguiente = null; } else { Delete(Primero, Primero.Siguiente, Condicion); } } } else { Primero = null; Ultimo = null; } BuscarValorUltimo(Primero); return(Apoyo); } else { return(Default); } }
public void InsertQueue(T Nuevo) { NodoPrioridad <T> Estruct = new NodoPrioridad <T>(); Estruct.Data = Nuevo; if (Primero == null) { Primero = Estruct; Estruct.Arriba = null; Ultimo = Estruct; } else { InsertQueu(Estruct, Primero); InsertarNuevoSiguiente(Estruct, Primero); } }
public void Insertar(T nMedicina, Delegate Comparacion) { NodoPrioridad <T> nuevo = new NodoPrioridad <T>(); nuevo.Data = nMedicina; nuevo.Izquierda = null; nuevo.Derecha = null; nuevo.Padre = null; nuevo.Altura = 1; if (Raiz == null) { Raiz = nuevo; } else { Insertar(nuevo, Raiz, Comparacion); } }
public int Balanceo(NodoPrioridad <T> N) { if (N.Derecha != null && N.Izquierda != null) { return(N.Derecha.Altura - N.Izquierda.Altura); } else if (N.Derecha != null) { return(N.Derecha.Altura); } else if (N.Izquierda != null) { return(0 - N.Izquierda.Altura); } else { return(0); } }
void InsertQueu(NodoPrioridad <T> Nuevo, NodoPrioridad <T> Raiz) { if (Raiz.Derecha == null || Raiz.Izquierda == null) { if (Raiz.Izquierda == null) { Raiz.Izquierda = Nuevo; Nuevo.Arriba = Raiz; } else { Raiz.Derecha = Nuevo; Nuevo.Arriba = Raiz; } } else { InsertQueu(Nuevo, Raiz.Siguiente); } }
T Buscar(string nBuscar, NodoPrioridad <T> N, Delegate Comparacion, T Default) { T Nuevo; if (N != null) { int Verificacion = Convert.ToInt16(Comparacion.DynamicInvoke(nBuscar, N.Data)); if (Verificacion != 0) { int compar = Convert.ToInt16(Comparacion.DynamicInvoke(nBuscar, N.Data)); if (compar < 0) { if (N.Izquierda != null) { Nuevo = Buscar(nBuscar, N.Izquierda, Comparacion, Default); return(Nuevo); } else { return(default);
void HeapSort(NodoPrioridad <T> Siguiente, Delegate Condicion) { if (Siguiente != null) { if (Siguiente.Derecha != null && Siguiente.Izquierda != null) { int IzquierdaDerecha = Convert.ToInt32(Condicion.DynamicInvoke(Siguiente.Izquierda.Data, Siguiente.Derecha.Data)); if (IzquierdaDerecha > 0) { int PadreDerecha = Convert.ToInt32(Condicion.DynamicInvoke(Siguiente.Data, Siguiente.Derecha.Data)); if (PadreDerecha > 0) { T Almacenar; Almacenar = Siguiente.Data; Siguiente.Data = Siguiente.Derecha.Data; Siguiente.Derecha.Data = Almacenar; HeapSort(Condicion); } else { HeapSort(Siguiente.Siguiente, Condicion); } } else if (IzquierdaDerecha < 0) { int PadreIzquierda = Convert.ToInt32(Condicion.DynamicInvoke(Siguiente.Data, Siguiente.Izquierda.Data)); if (PadreIzquierda > 0) { T Almacenar; Almacenar = Siguiente.Data; Siguiente.Data = Siguiente.Izquierda.Data; Siguiente.Izquierda.Data = Almacenar; HeapSort(Condicion); } else { HeapSort(Siguiente.Siguiente, Condicion); } } } else if (Siguiente.Izquierda != null) { int PadreIzquierda = Convert.ToInt32(Condicion.DynamicInvoke(Siguiente.Data, Siguiente.Izquierda.Data)); if (PadreIzquierda > 0) { T Almacenar; Almacenar = Siguiente.Data; Siguiente.Data = Siguiente.Izquierda.Data; Siguiente.Izquierda.Data = Almacenar; HeapSort(Condicion); } else { HeapSort(Siguiente.Siguiente, Condicion); } } else { return; } } else { return; } }
public void RaízC() { Raiz = null; }
public ArbolBinario() { Raiz = null; }