Package mx.unam.ciencias.edd
Class ArbolRojinegro<T extends Comparable<T>>
java.lang.Object
mx.unam.ciencias.edd.ArbolBinario<T>
mx.unam.ciencias.edd.ArbolBinarioOrdenado<T>
mx.unam.ciencias.edd.ArbolRojinegro<T>
Clase para árboles rojinegros. Un árbol rojinegro cumple las siguientes
propiedades:
- Todos los vértices son NEGROS o ROJOS.
- La raíz es NEGRA.
- Todas las hojas (
null
) son NEGRAS (al igual que la raíz). - Un vértice ROJO siempre tiene dos hijos NEGROS.
- Todo camino de un vértice a alguna de sus hojas descendientes tiene el mismo número de vértices NEGROS.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected class
Clase interna protegida para vértices.Nested classes/interfaces inherited from class mx.unam.ciencias.edd.ArbolBinario
ArbolBinario.Vertice
-
Field Summary
Fields inherited from class mx.unam.ciencias.edd.ArbolBinarioOrdenado
ultimoAgregado
Fields inherited from class mx.unam.ciencias.edd.ArbolBinario
elementos, raiz
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor sin parámetros.ArbolRojinegro
(Coleccion<T> coleccion) Construye un árbol rojinegro a partir de una colección. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Agrega un nuevo elemento al árbol.void
Elimina un elemento del árbol.getColor
(VerticeArbolBinario<T> vertice) Regresa el color del vértice rojinegro.void
giraDerecha
(VerticeArbolBinario<T> vertice) Lanza la excepciónUnsupportedOperationException
: los árboles rojinegros no pueden ser girados a la derecha por los usuarios de la clase, porque se desbalancean.void
giraIzquierda
(VerticeArbolBinario<T> vertice) Lanza la excepciónUnsupportedOperationException
: los árboles rojinegros no pueden ser girados a la izquierda por los usuarios de la clase, porque se desbalancean.protected ArbolBinario<T>.Vertice
nuevoVertice
(T elemento) Construye un nuevo vértice, usando una instancia deArbolRojinegro<T extends Comparable<T>>.VerticeRojinegro
.Methods inherited from class mx.unam.ciencias.edd.ArbolBinarioOrdenado
busca, dfsInOrder, dfsPostOrder, dfsPreOrder, eliminaVertice, getUltimoVerticeAgregado, intercambiaEliminable, iterator
Methods inherited from class mx.unam.ciencias.edd.ArbolBinario
altura, contiene, equals, esVacia, getElementos, limpia, raiz, toString, vertice
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ArbolRojinegro
public ArbolRojinegro()Constructor sin parámetros. Para no perder el constructor sin parámetros deArbolBinarioOrdenado
. -
ArbolRojinegro
Construye un árbol rojinegro a partir de una colección. El árbol rojinegro tiene los mismos elementos que la colección recibida.- Parameters:
coleccion
- la colección a partir de la cual creamos el árbol rojinegro.
-
-
Method Details
-
nuevoVertice
Construye un nuevo vértice, usando una instancia deArbolRojinegro<T extends Comparable<T>>.VerticeRojinegro
.- Overrides:
nuevoVertice
in classArbolBinario<T extends Comparable<T>>
- Parameters:
elemento
- el elemento dentro del vértice.- Returns:
- un nuevo vértice rojinegro con el elemento recibido dentro del mismo.
-
getColor
Regresa el color del vértice rojinegro.- Parameters:
vertice
- el vértice del que queremos el color.- Returns:
- el color del vértice rojinegro.
- Throws:
ClassCastException
- si el vértice no es instancia deArbolRojinegro<T extends Comparable<T>>.VerticeRojinegro
.
-
agrega
Agrega un nuevo elemento al árbol. El método invoca al métodoArbolBinarioOrdenado.agrega(T)
, y después balancea el árbol recoloreando vértices y girando el árbol como sea necesario.- Specified by:
agrega
in interfaceColeccion<T extends Comparable<T>>
- Overrides:
agrega
in classArbolBinarioOrdenado<T extends Comparable<T>>
- Parameters:
elemento
- el elemento a agregar.
-
elimina
Elimina un elemento del árbol. El método elimina el vértice que contiene el elemento, y recolorea y gira el árbol como sea necesario para rebalancearlo.- Specified by:
elimina
in interfaceColeccion<T extends Comparable<T>>
- Overrides:
elimina
in classArbolBinarioOrdenado<T extends Comparable<T>>
- Parameters:
elemento
- el elemento a eliminar del árbol.
-
giraIzquierda
Lanza la excepciónUnsupportedOperationException
: los árboles rojinegros no pueden ser girados a la izquierda por los usuarios de la clase, porque se desbalancean.- Overrides:
giraIzquierda
in classArbolBinarioOrdenado<T extends Comparable<T>>
- Parameters:
vertice
- el vértice sobre el que se quiere girar.- Throws:
UnsupportedOperationException
- siempre.
-
giraDerecha
Lanza la excepciónUnsupportedOperationException
: los árboles rojinegros no pueden ser girados a la derecha por los usuarios de la clase, porque se desbalancean.- Overrides:
giraDerecha
in classArbolBinarioOrdenado<T extends Comparable<T>>
- Parameters:
vertice
- el vértice sobre el que se quiere girar.- Throws:
UnsupportedOperationException
- siempre.
-