public virtual NodoDato <T> agregardato(T agregar, NodoDato <T> comparar) { //NodoDato<T> nuevonodo = new NodoDato<T>(agregar); if (comparar == null) { comparar = crearnuevonodo(agregar); } else { int a = comparar.Dato.CompareTo(agregar); if (a >= 0) { comparar.Izquierda = agregardato(agregar, comparar.Izquierda); } else { comparar.Derecha = agregardato(agregar, comparar.Derecha); } } return(comparar); }
public int buscar(NodoDato <T> comparacion, T s, ref bool u) { int z = 0; if (comparacion == null) { } else { if (comparacion.Dato.CompareTo(s) == 0) { u = true; } else { if (comparacion.Dato.CompareTo(s) >= 1) { z = buscar(comparacion.Izquierda, s, ref u) + 1; } else { z = buscar(comparacion.Derecha, s, ref u) + 1; } } } return(z); }
public NodoDato <T> crearnuevonodo(T agregar) { NodoDato <T> nuevonodo = null; nuevonodo = new NodoDato <T>(agregar); return(nuevonodo); }
public NodoDato <T> rotarizquierdaderecha(NodoDato <T> desbalanceado) { NodoDato <T> aux; desbalanceado.Izquierda = rotarizquierda(desbalanceado.Izquierda); aux = rotarderecha(desbalanceado); return(aux); }
public NodoDato <T> rotarizquierda(NodoDato <T> desbalanceado) { NodoDato <T> aux; aux = desbalanceado.Derecha; desbalanceado.Derecha = aux.Izquierda; aux.Izquierda = desbalanceado; return(aux); }
public virtual NodoDato <T> eliminardato(T agregar, NodoDato <T> comparacion) { if (comparacion == null) { //throw new Exception("no existe numero en el arbol"); } else { int a = comparacion.Dato.CompareTo(agregar); if (a == 0) { if (comparacion.Izquierda == null && comparacion.Derecha == null) { comparacion = null; } else { if (comparacion.Izquierda == null && comparacion.Derecha != null) { comparacion = comparacion.Derecha; comparacion.Derecha = null; } else { if (comparacion.Izquierda != null && comparacion.Derecha == null) { comparacion = comparacion.Izquierda; comparacion.Izquierda = null; } else { NodoDato <T> aux = comparacion.Izquierda; while (aux.Derecha != null) { aux = aux.Derecha; } comparacion.Dato = aux.Dato; eliminardato(aux.Dato, aux); } } } } else { if (a <= 1) { comparacion.Izquierda = eliminardato(agregar, comparacion.Izquierda); } else { comparacion.Derecha = eliminardato(agregar, comparacion.Derecha); } } } return(comparacion); }
public string mostrar(NodoDato <T> analizar) { NodoDato <T> actualNodo = analizar; string contenido; contenido = ""; contenido = contenido + "\n" + actualNodo.Dato.ToString() + ","; return(contenido); }
public string mostrarin(NodoDato <T> analizar) { if (analizar == null) { } else { mostrarin(analizar.Izquierda); ordenados = ordenados + mostrar(analizar); mostrarin(analizar.Derecha); } return(ordenados); }
public NodoDato <T> llamarbalanceo(NodoDato <T> inicio) { if (inicio.Izquierda != null) { inicio.Izquierda = llamarbalanceo(inicio.Izquierda); } if (inicio.Derecha != null) { inicio.Derecha = llamarbalanceo(inicio.Derecha); } int a = necesitobalanceo(inicio); if (a >= -1 && a <= 1) { } else { if (a > 1) { int b = necesitobalanceo(inicio.Izquierda); if (b < 0) { inicio = rotarizquierdaderecha(inicio); } else { inicio = rotarderecha(inicio); } } else { int c = necesitobalanceo(inicio.Derecha); if (c > 0) { inicio = rotarderechaizquierda(inicio); } else { inicio = rotarizquierda(inicio); } } } return(inicio); }
public int CompareTo(object obj) { if (obj == null) { return(1); } NodoDato <T> otherNodoDato = obj as NodoDato <T>; if (otherNodoDato != null) { return(this.Dato.CompareTo(otherNodoDato.Dato)); } else { throw new ArgumentException("Object is not a NodoDato"); } }
public int necesitobalanceo(NodoDato <T> padre) { raiz.calcularaltura(); int a = 0; if (padre.Izquierda == null && padre.Derecha == null) { a = 0; } else if (padre.Izquierda == null && padre.Derecha != null) { a = 0 - padre.Derecha.altura; } else if (padre.Izquierda != null && padre.Derecha == null) { a = padre.Izquierda.altura; } else if (padre.Izquierda != null && padre.Derecha != null) { a = padre.Izquierda.altura - padre.Derecha.altura; } return(a); }
public ArbolABB() { raiz = null; }
public virtual void sacardato(T agregar) { raiz = eliminardato(agregar, raiz); }
public virtual void meterdato(T agregar) { raiz = agregardato(agregar, raiz); }