2. Uso de árboles en búsquedas
Los árboles binarios de búsqueda son otro
tipo de árbol binario, caracterizados por la
ordenación de elementos dentro del árbol.
Mtl Lourdes Cahuich 2
3. Uso de árboles en búsquedas
Los árboles binarios de búsqueda
mantienen elementos en un orden
ordenado.
Debido a esto, los árboles binarios de
búsqueda, soportan de manera efectiva la
búsqueda de elementos individuales
Mtl Lourdes Cahuich 3
4. Uso de árboles en búsquedas
Los árboles binarios de búsqueda
mantienen los elementos en orden.
Todos los elementos menores que la
raíz son almacenados en el árbol
enraizado en el hijo izquierdo de la
raíz.
Mtl Lourdes Cahuich 4
5. Uso de árboles en búsquedas
Todos los elementos mayores que la
raíz son almacenados en el árbol
enraizado en el hijo derecho de la
raíz.
Este principio se aplica de forma recursiva
para todos los nodos del árbol.
Mtl Lourdes Cahuich 5
6. Uso de árboles en búsquedas
Para cualquier nodo en un árbol binario
de búsqueda, todos los elementos en el
subárbol del hijo izquierdo, son
menores que el elemento en el nodo.
También, todos los elementos en el
subárbol en el hijo derecho son
mayores que el elemento en el nodo
Mtl Lourdes Cahuich 6
8. Uso de árboles en búsquedas
No todos los árboles binarios de búsqueda
tienen todos los nodos hoja en el mismo
nivel dentro del árbol.
Los árboles binarios de búsqueda pueden
estar desequilibrados.
Mtl Lourdes Cahuich 8
9. Variaciones en los árboles
Un árbol desequilibrado es un árbol que
tiene subárboles izquierdos y derechos,
cuya altura difiere por más de un nivel.
Mtl Lourdes Cahuich 9
10. Variaciones en los árboles
Los árboles binarios de búsqueda se
vuelven desequilibrados cuando los
elementos de tamaño creciente o
decreciente se agregan continuamente a
la estructura.
Mtl Lourdes Cahuich 10
11. Variaciones en los árboles
El desempeño de un árbol binario de
búsqueda se aproxima al del tiempo lineal
cuando la estructura llega a ser muy
desequilibrada
Mtl Lourdes Cahuich 11
13. Variaciones en los árboles
Un nodo en un árbol binario de búsqueda
puede contener solamente un hijo.
Un árbol binario de búsqueda que
contiene uno o más de estos tipos de
nodos, es un árbol incompleto
Mtl Lourdes Cahuich 13
15. Uso de Árboles Binarios de
Búsqueda
Un árbol binario de búsqueda es una
estructura de datos basada en un árbol
que mantiene una colección ordenada de
elementos.
Mtl Lourdes Cahuich 15
16. Uso de Árboles Binarios de
Búsqueda
Por la forma en que mantienen el orden
de sus elementos almacenados, los
árboles binarios de búsqueda pueden
desarrollar ciertas tareas más
eficientemente que otras estructuras de
datos.
Mtl Lourdes Cahuich 16
17. template <class T>
class BSTree {
protected:
BSTNode<T> *root; // root of tree
int count; // size of tree
public:
BSTree() : root(NULL), count(0) {}
BSTree(const BSTree&);
virtual ~BSTree() {if (root) delete root;}
virtual int size() const { return count; }
virtual bool insert( const T& x );
virtual const T* const search( const T& x );
virtual bool remove( const T& x );
Mtl Lourdes Cahuich 17
19. Uso de Árboles Binarios de
Búsqueda
Esta es una clase del árbol binario de
búsqueda que soporta operaciones para
la inserción, acceso, y eliminación de
elementos.
También contiene un método que regresa
el número de elementos actualmente
almacenados en el árbol binario de
búsqueda.
Mtl Lourdes Cahuich 19
20. BSTree
La clase BSTree es una plantilla de clase.
Esto nos permite crear instancias de la
clase que pueden almacenar diferentes
tipos de datos.
Mtl Lourdes Cahuich 20
21. BSTree
Una consideración importante que
debemos de tomar en cuenta antes de
usar esta clase, es que internamente,
algunos de los métodos de esta clase
usan operadores ==, <, y > para
desarrollar la tarea de inserción, acceso, y
eliminación de elementos
Mtl Lourdes Cahuich 21
22. BSTree
Por lo tanto, cualquier objeto que
almacenemos en esta clase del árbol
binario de búsqueda, debe proveer estos
operadores
Mtl Lourdes Cahuich 22
24. BSTree -search
La función search ofrece una forma de
acceder elementos que existen en el árbol
binario de búsqueda.
Si el elemento solicitado no es encontrado
en el árbol binario de búsqueda, la función
regresa el apuntador nulo.
Mtl Lourdes Cahuich 24
25. BSTree -search
De otra forma, la función regresa un
apuntador constante a una versión
constante del elemento
Mtl Lourdes Cahuich 25
26. BSTree -search
El apuntador debe ser constante para
prevenir que un usuario intente obtener
acceso a otra porción de memoria usando
la aritmética del apuntador.
El elemento al que apunta el apuntador
debe ser constante para asegurar que se
mantenga la integridad del árbol.
Mtl Lourdes Cahuich 26
27. BSTree -search
Cambiar el valor de un elemento
almacenado podría posiblemente cambiar
el lugar donde debe ser almacenado el
elemento en el árbol binario de búsqueda.
Mtl Lourdes Cahuich 27
28. BSTree -search
El proceso correcto para actualizar un
elemento almacenado involucra primero
remover el elemento, luego actualizar una
copia del elemento, y después insertar la
copia actualizada.
Mtl Lourdes Cahuich 28
30. Heaps
Los heaps son árboles binarios usados a
menudo para brindar un acceso eficiente
al valor mínimo o máximo de un conjunto
de valores.
Un uso de esta funcionalidad es la
implantación de una cola de prioridades
Mtl Lourdes Cahuich 30
31. Heaps
Una cola de prioridades es una estructura
de datos que se comporta de forma similar
a una cola regular, debido a que ofrece los
métodos push, pop, size, y empty.
Mtl Lourdes Cahuich 31
32. Heaps
Las colas de prioridad se diferencian de
las colas regulares debido a que el
elemento pop que elimina una cola de
prioridad, depende de una prioridad
asignada, y no del principio quot;Primero-en-
Entrar, Primero-en Salirquot;.
Mtl Lourdes Cahuich 32
33. Heaps
Las colas de prioridad son usadas
regularmente, STL provee el adaptador
priority_queue
Mtl Lourdes Cahuich 33