import java.util.Comparator; /** * Clase que extiende ArbolBinarioBusqueda para permitir trabajar con * datos duplicados. * @author Amparo Lopez Gaona * @version 1a. ed. */ class ArbolBinarioBusquedaR extends ArbolBinarioBusqueda { /** * Constructor por omision. */ public ArbolBinarioBusquedaR () { super(); } /** * Metodo para construir un arbol binario de búsqueda incluyendo un comparador * @param c -- objeto comparador usado para colocar elementos en secuencia. */ public ArbolBinarioBusquedaR (Comparator c) { super(c); } /** * Metodo para insertar en el arbol manteniendo el balance e ignorando duplicados. * @param dato -- el dato a insertar */ public void agregar (Object dato) { raiz = agregar(dato, raiz); } /* * Metodo interno para agregar en un subarbol. * @param dato elemento a agregar. * @param nodo la raiz del arbol en donde se agregara el dato. * @return la nueva raiz. */ private NodoArbol agregar(Object elemento, NodoArbol nodo) { if(nodo == null) { nodo = new NodoArbol(elemento); nElementos ++; } else if(prueba.compare(elemento ,nodo.valor) <= 0) nodo.izquierda = agregar(elemento, nodo.izquierda); else nodo.derecha = agregar(elemento, nodo.derecha); return nodo; } /** * Metodo que devuelve la raiz de un arbol * @return NodoArbol -- nodo que es la raiz del arbol */ public NodoArbol obtenerRaiz() { return raiz; } }