Árboles como Estructuras
      de Búsqueda
       Apoyo SSD5
Uso de árboles en búsquedas
Los árboles binarios de búsqueda son otro
tipo de árbol binario, caracterizados por la
ordenac...
Uso de árboles en búsquedas
Los árboles binarios de búsqueda
mantienen elementos en un orden
ordenado.
Debido a esto, los ...
Uso de árboles en búsquedas
Los árboles binarios de búsqueda
mantienen los elementos en orden.
Todos los elementos menores...
Uso de árboles en búsquedas
Todos los elementos mayores que la
raíz son almacenados en el árbol
enraizado en el hijo derec...
Uso de árboles en búsquedas
Para cualquier nodo en un árbol binario
de búsqueda, todos los elementos en el
subárbol del hi...
Mtl Lourdes Cahuich   7
Uso de árboles en búsquedas
No todos los árboles binarios de búsqueda
tienen todos los nodos hoja en el mismo
nivel dentro...
Variaciones en los árboles
Un árbol desequilibrado es un árbol que
tiene subárboles izquierdos y derechos,
cuya altura dif...
Variaciones en los árboles
Los árboles binarios de búsqueda se
vuelven desequilibrados cuando los
elementos de tamaño crec...
Variaciones en los árboles
El desempeño de un árbol binario de
búsqueda se aproxima al del tiempo lineal
cuando la estruct...
Mtl Lourdes Cahuich   12
Variaciones en los árboles
Un nodo en un árbol binario de búsqueda
puede contener solamente un hijo.
Un árbol binario de b...
Cómo Usar Estructuras de
        Árbol
Uso de Árboles Binarios de
           Búsqueda
Un árbol binario de búsqueda es una
estructura de datos basada en un árbol
...
Uso de Árboles Binarios de
           Búsqueda
Por la forma en que mantienen el orden
de sus elementos almacenados, los
ár...
template <class T>
class BSTree {
protected:
    BSTNode<T> *root;     // root of tree
    int count;         // size of t...
protected:
    virtual BSTNode<T>*
  copy_tree(BSTNode<T>* nodep);
    virtual bool insert_helper(BSTNode<T>
  *&nodep, co...
Uso de Árboles Binarios de
           Búsqueda
Esta es una clase del árbol binario de
búsqueda que soporta operaciones par...
BSTree
La clase BSTree es una plantilla de clase.
Esto nos permite crear instancias de la
clase que pueden almacenar difer...
BSTree
Una consideración importante que
debemos de tomar en cuenta antes de
usar esta clase, es que internamente,
algunos ...
BSTree
Por lo tanto, cualquier objeto que
almacenemos en esta clase del árbol
binario de búsqueda, debe proveer estos
oper...
template <class T>
const T* const BSTree<T>::search_helper(BSTNode<T>
*nodep, const T &x) {
    if (nodep == 0) {
        ...
BSTree -search
La función search ofrece una forma de
acceder elementos que existen en el árbol
binario de búsqueda.
Si el ...
BSTree -search
De otra forma, la función regresa un
apuntador constante a una versión
constante del elemento




         ...
BSTree -search
El apuntador debe ser constante para
prevenir que un usuario intente obtener
acceso a otra porción de memor...
BSTree -search
Cambiar el valor de un elemento
almacenado podría posiblemente cambiar
el lugar donde debe ser almacenado e...
BSTree -search
El proceso correcto para actualizar un
elemento almacenado involucra primero
remover el elemento, luego act...
Cómo Usar Heaps
Heaps
Los heaps son árboles binarios usados a
menudo para brindar un acceso eficiente
al valor mínimo o máximo de un conju...
Heaps
Una cola de prioridades es una estructura
de datos que se comporta de forma similar
a una cola regular, debido a que...
Heaps
Las colas de prioridad se diferencian de
las colas regulares debido a que el
elemento pop que elimina una cola de
pr...
Heaps
Las colas de prioridad son usadas
regularmente, STL provee el adaptador
priority_queue




                Mtl Lourd...
Upcoming SlideShare
Loading in …5
×

18 Arboles Como Estructura De Busqueda

3,677 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,677
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
84
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

18 Arboles Como Estructura De Busqueda

  1. 1. Árboles como Estructuras de Búsqueda Apoyo SSD5
  2. 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. 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. 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. 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. 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
  7. 7. Mtl Lourdes Cahuich 7
  8. 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. 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. 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. 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
  12. 12. Mtl Lourdes Cahuich 12
  13. 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
  14. 14. Cómo Usar Estructuras de Árbol
  15. 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. 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. 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
  18. 18. protected: virtual BSTNode<T>* copy_tree(BSTNode<T>* nodep); virtual bool insert_helper(BSTNode<T> *&nodep, const T &x); virtual const T* const search_helper(BSTNode<T> * nodep, const T &x); virtual bool remove_helper(BSTNode<T> *&nodep, const T &x); virtual BSTNode<T>* remove_leftmost_child(BSTNode<T> *&nodep); }; Mtl Lourdes Cahuich 18
  19. 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. 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. 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. 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
  23. 23. template <class T> const T* const BSTree<T>::search_helper(BSTNode<T> *nodep, const T &x) { if (nodep == 0) { return NULL; } if (x == nodep->data) { return &(nodep->data); } if (x < nodep->data) { return search_helper(nodep->left, x); } else { return search_helper(nodep->right, x); } } Mtl Lourdes Cahuich 23
  24. 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. 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. 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. 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. 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
  29. 29. Cómo Usar Heaps
  30. 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. 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. 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. 33. Heaps Las colas de prioridad son usadas regularmente, STL provee el adaptador priority_queue Mtl Lourdes Cahuich 33

×