Package mx.unam.ciencias.edd
Class ArbolBinarioOrdenado<T extends Comparable<T>>
java.lang.Object
mx.unam.ciencias.edd.ArbolBinario<T>
mx.unam.ciencias.edd.ArbolBinarioOrdenado<T>
Clase para árboles binarios ordenados. Los árboles son genéricos, pero
acotados a la interfaz Comparable
.
Un árbol instancia de esta clase siempre cumple que:
- Cualquier elemento en el árbol es mayor o igual que todos sus descendientes por la izquierda.
- Cualquier elemento en el árbol es menor o igual que todos sus descendientes por la derecha.
-
Nested Class Summary
Nested classes/interfaces inherited from class mx.unam.ciencias.edd.ArbolBinario
ArbolBinario.Vertice
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ArbolBinario<T>.Vertice
El vértice del último elemento agegado.Fields inherited from class mx.unam.ciencias.edd.ArbolBinario
elementos, raiz
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor sin parámetros.ArbolBinarioOrdenado
(Coleccion<T> coleccion) Construye un árbol binario ordenado a partir de una colección. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Agrega un nuevo elemento al árbol.Busca un elemento en el árbol recorriéndolo in-order.void
dfsInOrder
(AccionVerticeArbolBinario<T> accion) Realiza un recorrido DFS in-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.void
dfsPostOrder
(AccionVerticeArbolBinario<T> accion) Realiza un recorrido DFS post-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.void
dfsPreOrder
(AccionVerticeArbolBinario<T> accion) Realiza un recorrido DFS pre-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.void
Elimina un elemento.protected void
eliminaVertice
(ArbolBinario<T>.Vertice vertice) Elimina un vértice que a lo más tiene un hijo distinto denull
subiendo ese hijo (si existe).Regresa el vértice que contiene el último elemento agregado al árbol.void
giraDerecha
(VerticeArbolBinario<T> vertice) Gira el árbol a la derecha sobre el vértice recibido.void
giraIzquierda
(VerticeArbolBinario<T> vertice) Gira el árbol a la izquierda sobre el vértice recibido.protected ArbolBinario<T>.Vertice
intercambiaEliminable
(ArbolBinario<T>.Vertice vertice) Intercambia el elemento de un vértice con dos hijos distintos denull
con el elemento de un descendiente que tenga a lo más un hijo.iterator()
Regresa un iterador para iterar el árbol.Methods inherited from class mx.unam.ciencias.edd.ArbolBinario
altura, contiene, equals, esVacia, getElementos, limpia, nuevoVertice, 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
-
Field Details
-
ultimoAgregado
El vértice del último elemento agegado. Este vértice sólo se puede garantizar que existe inmediatamente después de haber agregado un elemento al árbol. Si cualquier operación distinta a agregar sobre el árbol se ejecuta después de haber agregado un elemento, el estado de esta variable es indefinido.
-
-
Constructor Details
-
ArbolBinarioOrdenado
public ArbolBinarioOrdenado()Constructor sin parámetros. Para no perder el constructor sin parámetros deArbolBinario
. -
ArbolBinarioOrdenado
Construye un árbol binario ordenado a partir de una colección. El árbol binario ordenado tiene los mismos elementos que la colección recibida.- Parameters:
coleccion
- la colección a partir de la cual creamos el árbol binario ordenado.
-
-
Method Details
-
agrega
Agrega un nuevo elemento al árbol. El árbol conserva su orden in-order.- Parameters:
elemento
- el elemento a agregar.
-
elimina
Elimina un elemento. Si el elemento no está en el árbol, no hace nada; si está varias veces, elimina el primero que encuentre (in-order). El árbol conserva su orden in-order.- Parameters:
elemento
- el elemento a eliminar.
-
intercambiaEliminable
Intercambia el elemento de un vértice con dos hijos distintos denull
con el elemento de un descendiente que tenga a lo más un hijo.- Parameters:
vertice
- un vértice con dos hijos distintos denull
.- Returns:
- el vértice descendiente con el que vértice recibido se
intercambió. El vértice regresado tiene a lo más un hijo distinto
de
null
.
-
eliminaVertice
Elimina un vértice que a lo más tiene un hijo distinto denull
subiendo ese hijo (si existe).- Parameters:
vertice
- el vértice a eliminar; debe tener a lo más un hijo distinto denull
.
-
busca
Busca un elemento en el árbol recorriéndolo in-order. Si lo encuentra, regresa el vértice que lo contiene; si no, regresanull
.- Overrides:
busca
in classArbolBinario<T extends Comparable<T>>
- Parameters:
elemento
- el elemento a buscar.- Returns:
- un vértice que contiene al elemento buscado si lo
encuentra;
null
en otro caso.
-
getUltimoVerticeAgregado
Regresa el vértice que contiene el último elemento agregado al árbol. Este método sólo se puede garantizar que funcione inmediatamente después de haber invocado al métodoagrega(T)
. Si cualquier operación distinta a agregar sobre el árbol se ejecuta después de haber agregado un elemento, el comportamiento de este método es indefinido.- Returns:
- el vértice que contiene el último elemento agregado al árbol, si el método es invocado inmediatamente después de agregar un elemento al árbol.
-
giraDerecha
Gira el árbol a la derecha sobre el vértice recibido. Si el vértice no tiene hijo izquierdo, el método no hace nada.- Parameters:
vertice
- el vértice sobre el que vamos a girar.
-
giraIzquierda
Gira el árbol a la izquierda sobre el vértice recibido. Si el vértice no tiene hijo derecho, el método no hace nada.- Parameters:
vertice
- el vértice sobre el que vamos a girar.
-
dfsPreOrder
Realiza un recorrido DFS pre-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.- Parameters:
accion
- la acción a realizar en cada elemento del árbol.
-
dfsInOrder
Realiza un recorrido DFS in-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.- Parameters:
accion
- la acción a realizar en cada elemento del árbol.
-
dfsPostOrder
Realiza un recorrido DFS post-order en el árbol, ejecutando la acción recibida en cada elemento del árbol.- Parameters:
accion
- la acción a realizar en cada elemento del árbol.
-
iterator
Regresa un iterador para iterar el árbol. El árbol se itera en orden.- Returns:
- un iterador para iterar el árbol.
-