protected Nodo InsertarEnArbol(Nodo RaizSub, IComparador dato) { if (RaizSub == null) { RaizSub = new Nodo(dato); } else if (dato.MenorQue(RaizSub.Dato)) { Nodo iz; iz = InsertarEnArbol(RaizSub.NodoIzquierdo, dato); RaizSub.NodoIzquierdo = iz; } else if (dato.MayorQue(RaizSub.Dato)) { Nodo dr; dr = InsertarEnArbol(RaizSub.NodoDerecho, dato); RaizSub.NodoDerecho = dr; } else { throw new Exception("Nodo duplicado"); } return(RaizSub); }
public ServicoIncluirUsuariosAD(IComparador comparador, IConsultaOU consultaOU, IRepositorioAD repositorioAD, IRepositorioCoreSSO repositorioCoreSSO, IRepositorioADSync repositorioADSync) { this.comparador = comparador ?? throw new ArgumentNullException(nameof(comparador)); this.consultaOU = consultaOU ?? throw new ArgumentNullException(nameof(consultaOU)); this.repositorioAD = repositorioAD ?? throw new ArgumentNullException(nameof(repositorioAD)); this.repositorioCoreSSO = repositorioCoreSSO ?? throw new ArgumentNullException(nameof(repositorioCoreSSO)); this.repositorioADSync = repositorioADSync ?? throw new ArgumentNullException(nameof(repositorioADSync)); }
protected Nodo Localizar(Nodo raizSub, IComparador buscado) { if (raizSub == null) { return(null); } else if (buscado.IgualQue(raizSub.Dato)) { return(Raiz); } else if (buscado.MenorQue(raizSub.Dato)) { return(Localizar(raizSub.NodoIzquierdo, buscado)); } else { return(Localizar(raizSub.NodoDerecho, buscado)); } }
protected Nodo EliminarEnArbol(Nodo RaizSub, IComparador dato) { if (RaizSub == null) { throw new Exception("No encontrado nodo + clave"); } else if (dato.MenorQue(Raiz.NodoIzquierdo)) { Nodo iz; iz = EliminarEnArbol(RaizSub.NodoIzquierdo, dato); RaizSub.NodoIzquierdo = iz; } else if (dato.MayorQue(RaizSub.NodoDerecho)) { Nodo dr; dr = EliminarEnArbol(RaizSub.NodoDerecho, dato); RaizSub.NodoDerecho = dr; } else { Nodo q; q = RaizSub; if (q.NodoIzquierdo == null) { RaizSub = q.NodoDerecho; } else if (q.NodoDerecho == null) { RaizSub = q.NodoIzquierdo; } else { q = Reemplazar(q); } q = null; } return(RaizSub); }