196
Alonso Ramírez Manzanares Computación y Algoritmos 25.04 Árboles binarios de búsqueda ( BST ) mat-151 Monday, May 1, 17

Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04

Árboles binarios de búsqueda ( BST )

mat-151

Monday, May 1, 17

Page 2: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04

Arbol Binario de Búsqueda• Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

definido de la siguiente forma:

• Todo árbol vacío es un árbol binario de búsqueda.

• Un árbol binario no vacío, de raíz R, es un árbol binario de búsqueda si:

• En caso de tener subárbol izquierdo, la raíz R debe ser mayor que el valor máximo almacenado en el subárbol izquierdo, y que el subárbol izquierdo sea un árbol binario de búsqueda.

• En caso de tener subárbol derecho, la raíz R debe ser menor que el valor mínimo almacenado en el subárbol derecho, y que el subárbol derecho sea un árbol binario de búsqueda.

2

Monday, May 1, 17

Page 3: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04

Notacion de psudocódigos

• Dado un nodo x y un arbol T

• root[T] regresa el nodo raiz del arbol

• key[x] regresa la llave (contenido) de x

• left[x] regresa el apuntador al hijo izquierdo de x

• right[x] regresa el apuntador al hijo derecho de x

• p[x] regresa el apuntador al padre de x

3

Monday, May 1, 17

Page 4: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

Monday, May 1, 17

Page 5: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

Monday, May 1, 17

Page 6: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

Monday, May 1, 17

Page 7: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

Monday, May 1, 17

Page 8: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

Monday, May 1, 17

Page 9: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

Monday, May 1, 17

Page 10: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 11: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 12: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 13: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 14: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 15: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

15 → 6 → 7 → 13 TREE-SEARCH(x,13)

Monday, May 1, 17

Page 16: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

15 → 6 → 7 → 13

• Tiempo de ejecución de TREE-SEARCH?:

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 17: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 4

Operaciones en BST: búsqueda recursiva

• Dada una llave en un árbol binario de búsqueda, regresar el valor de un nodo.

• Entrada: apuntador a la raíz del árbol y la llave k.

• Salida: apuntador al nodo con la llave k, si existe y si no regresa NULL.

TREE-SEARCH( x, k )

1. if x = NULL o k = key[x]2. then return x3. if k < key[x]4. then return TREE-SEARCH( left[x], k )5. else return TREE-SEARCH( right[x], k )

15 → 6 → 7 → 13

• Tiempo de ejecución de TREE-SEARCH?: O(h) donde h es la altura del árbol.

TREE-SEARCH(x,13)

Monday, May 1, 17

Page 18: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

Monday, May 1, 17

Page 19: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

Monday, May 1, 17

Page 20: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

Monday, May 1, 17

Page 21: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

Monday, May 1, 17

Page 22: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

Monday, May 1, 17

Page 23: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 24: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 25: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 26: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 27: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 28: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

15 → 6 → 7 → 13

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 29: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

• Tiempo de ejecución de ITERATIVE-TREE-SEARCH?:

15 → 6 → 7 → 13

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 30: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 5

Operaciones en BST: búsqueda iterativa

• Mismo principio “desenrollando” la recursión en un ciclo while.

• En la mayoría de las computadoras esta versión es más eficiente.

ITERATIVE-TREE-SEARCH( x, k )

1. while x ≠ NULL y k ≠ key[x]2. do if k < key[x]3. then x ← left[x]4. else x ← right[x]5. return x

• Tiempo de ejecución de ITERATIVE-TREE-SEARCH?: O(h)

15 → 6 → 7 → 13

ITERATIVE-TREE-SEARCH(x,13)

Monday, May 1, 17

Page 31: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

Monday, May 1, 17

Page 32: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

TREE-MINIMUM( x )

1. while left[x] ≠ NULL2. do x ← left[x]3. return x

Monday, May 1, 17

Page 33: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

TREE-MINIMUM( x )

1. while left[x] ≠ NULL2. do x ← left[x]3. return x

• Simétricamente se puede encontrar el elemento máximo de un BST siguiendo los hijos derechos a partir de la raíz hasta encontrar NULL.

Monday, May 1, 17

Page 34: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

TREE-MINIMUM( x )

1. while left[x] ≠ NULL2. do x ← left[x]3. return x

TREE-MAXIMUM( x )

1. while right[x] ≠ NULL2. do x ← right[x]3. return x

• Simétricamente se puede encontrar el elemento máximo de un BST siguiendo los hijos derechos a partir de la raíz hasta encontrar NULL.

Monday, May 1, 17

Page 35: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

TREE-MINIMUM( x )

1. while left[x] ≠ NULL2. do x ← left[x]3. return x

TREE-MAXIMUM( x )

1. while right[x] ≠ NULL2. do x ← right[x]3. return x

• Simétricamente se puede encontrar el elemento máximo de un BST siguiendo los hijos derechos a partir de la raíz hasta encontrar NULL.

• Tiempo de ejecución?:

Monday, May 1, 17

Page 36: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 6

Operaciones en BST: mínimo y máximo

• Se puede encontrar el elemento mínimo de un BST siguiendo los hijos izquierdos a partir de la raíz hasta encontrar NULL.

TREE-MINIMUM( x )

1. while left[x] ≠ NULL2. do x ← left[x]3. return x

TREE-MAXIMUM( x )

1. while right[x] ≠ NULL2. do x ← right[x]3. return x

• Simétricamente se puede encontrar el elemento máximo de un BST siguiendo los hijos derechos a partir de la raíz hasta encontrar NULL.

• Tiempo de ejecución?:O(h)

Monday, May 1, 17

Page 37: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

Monday, May 1, 17

Page 38: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

Monday, May 1, 17

Page 39: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

Monday, May 1, 17

Page 40: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

TREE-SUCCESSOR( x )

1. if right[x] ≠ NULL2. then return TREE-MINIMUM(right[x])3. y ← p[x]4. while y ≠ NULL y x=right[y]5. do x ← y6. y ← p[y]7. return y

Monday, May 1, 17

Page 41: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

TREE-SUCCESSOR( x )

1. if right[x] ≠ NULL2. then return TREE-MINIMUM(right[x])3. y ← p[x]4. while y ≠ NULL y x=right[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol derecho diferente a NULL, minimo del sub-árbol derecho.

TREE-SUCCESSOR(15)

Monday, May 1, 17

Page 42: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

TREE-SUCCESSOR( x )

1. if right[x] ≠ NULL2. then return TREE-MINIMUM(right[x])3. y ← p[x]4. while y ≠ NULL y x=right[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol derecho diferente a NULL, minimo del sub-árbol derecho.

TREE-SUCCESSOR(15)

caso 2: sub-árbol derecho igual a NULL, subir hasta encontrar un nodo que sea el hijo izquierdo de su padre, el padre es el sucesor.

TREE-SUCCESSOR(13)

Monday, May 1, 17

Page 43: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

TREE-SUCCESSOR( x )

1. if right[x] ≠ NULL2. then return TREE-MINIMUM(right[x])3. y ← p[x]4. while y ≠ NULL y x=right[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol derecho diferente a NULL, minimo del sub-árbol derecho.

TREE-SUCCESSOR(15)

caso 2: sub-árbol derecho igual a NULL, subir hasta encontrar un nodo que sea el hijo izquierdo de su padre, el padre es el sucesor.

TREE-SUCCESSOR(13)• Tiempo de ejecución?:

Monday, May 1, 17

Page 44: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 7

Operaciones en BST: sucesor

• Dado un nodo en un BST, encontrar su sucesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el sucesor de un nodo x es el nodo con la llave más pequeña mayor que key[x].

TREE-SUCCESSOR( x )

1. if right[x] ≠ NULL2. then return TREE-MINIMUM(right[x])3. y ← p[x]4. while y ≠ NULL y x=right[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol derecho diferente a NULL, minimo del sub-árbol derecho.

TREE-SUCCESSOR(15)

caso 2: sub-árbol derecho igual a NULL, subir hasta encontrar un nodo que sea el hijo izquierdo de su padre, el padre es el sucesor.

TREE-SUCCESSOR(13)• Tiempo de ejecución?:O(h)

Monday, May 1, 17

Page 45: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

Monday, May 1, 17

Page 46: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

Monday, May 1, 17

Page 47: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

Monday, May 1, 17

Page 48: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

TREE-PREDECESSOR( x )

1. if left[x] ≠ NULL2. then return TREE-MAXIMUM(left[x])3. y ← p[x]4. while y ≠ NULL y x=left[y]5. do x ← y6. y ← p[y]7. return y

Monday, May 1, 17

Page 49: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

TREE-PREDECESSOR( x )

1. if left[x] ≠ NULL2. then return TREE-MAXIMUM(left[x])3. y ← p[x]4. while y ≠ NULL y x=left[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol izquierdo diferente a NULL, máximo del sub-árbol izquierdo.

TREE-PREDECESSOR(15)

Monday, May 1, 17

Page 50: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

TREE-PREDECESSOR( x )

1. if left[x] ≠ NULL2. then return TREE-MAXIMUM(left[x])3. y ← p[x]4. while y ≠ NULL y x=left[y]5. do x ← y6. y ← p[y]7. return y

caso 1: sub-árbol izquierdo diferente a NULL, máximo del sub-árbol izquierdo.

TREE-PREDECESSOR(15)

caso 2: sub-árbol izquierdo igual a NULL, subir hasta encontrar un nodo que sea el hijo derecho de su padre. El padre es el antecesor.

TREE-PREDECESSOR(17)

Monday, May 1, 17

Page 51: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

TREE-PREDECESSOR( x )

1. if left[x] ≠ NULL2. then return TREE-MAXIMUM(left[x])3. y ← p[x]4. while y ≠ NULL y x=left[y]5. do x ← y6. y ← p[y]7. return y

• Tiempo de ejecución?:

caso 1: sub-árbol izquierdo diferente a NULL, máximo del sub-árbol izquierdo.

TREE-PREDECESSOR(15)

caso 2: sub-árbol izquierdo igual a NULL, subir hasta encontrar un nodo que sea el hijo derecho de su padre. El padre es el antecesor.

TREE-PREDECESSOR(17)

Monday, May 1, 17

Page 52: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 8

Operaciones en BST: antecesor

• Simétricamente, dado un nodo en un BST, encontrar su antecesor en el orden determinado por un recorrido en orden.

• Si todas las llaves son diferentes, el antecesor de un nodo x es el nodo con la llave más grande menor que key[x].

TREE-PREDECESSOR( x )

1. if left[x] ≠ NULL2. then return TREE-MAXIMUM(left[x])3. y ← p[x]4. while y ≠ NULL y x=left[y]5. do x ← y6. y ← p[y]7. return y

• Tiempo de ejecución?:O(h)

caso 1: sub-árbol izquierdo diferente a NULL, máximo del sub-árbol izquierdo.

TREE-PREDECESSOR(15)

caso 2: sub-árbol izquierdo igual a NULL, subir hasta encontrar un nodo que sea el hijo derecho de su padre. El padre es el antecesor.

TREE-PREDECESSOR(17)

Monday, May 1, 17

Page 53: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

Monday, May 1, 17

Page 54: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

• En resumen:

Monday, May 1, 17

Page 55: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

• En resumen:

• las operaciones de búsqueda, encontrar mínimo, encontrar máximo, encontrar el sucesor de un nodo y encontrar el antecesor de un nodo pueden implementarse de tal manera que se ejecuten en un tiempo O(h) en un árbol binario de búsqueda de altura h.

Monday, May 1, 17

Page 56: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

• En resumen:

• las operaciones de búsqueda, encontrar mínimo, encontrar máximo, encontrar el sucesor de un nodo y encontrar el antecesor de un nodo pueden implementarse de tal manera que se ejecuten en un tiempo O(h) en un árbol binario de búsqueda de altura h.

Monday, May 1, 17

Page 57: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

• En resumen:

• las operaciones de búsqueda, encontrar mínimo, encontrar máximo, encontrar el sucesor de un nodo y encontrar el antecesor de un nodo pueden implementarse de tal manera que se ejecuten en un tiempo O(h) en un árbol binario de búsqueda de altura h.

• Las operaciones de inserción y eliminación causan una modificación del árbol binario de búsqueda.

Monday, May 1, 17

Page 58: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 9

Operaciones en BST

• En resumen:

• las operaciones de búsqueda, encontrar mínimo, encontrar máximo, encontrar el sucesor de un nodo y encontrar el antecesor de un nodo pueden implementarse de tal manera que se ejecuten en un tiempo O(h) en un árbol binario de búsqueda de altura h.

• Las operaciones de inserción y eliminación causan una modificación del árbol binario de búsqueda.

• El árbol debe variar de tal manera que su propiedad de orden se preserve (recordar montículos)

Monday, May 1, 17

Page 59: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

Monday, May 1, 17

Page 60: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

Monday, May 1, 17

Page 61: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

Monday, May 1, 17

Page 62: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

Monday, May 1, 17

Page 63: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

• left[z]=NULL,

Monday, May 1, 17

Page 64: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

• left[z]=NULL,

• right[z]=NULL,

Monday, May 1, 17

Page 65: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

• left[z]=NULL,

• right[z]=NULL,

• p[z] = NULL.

Monday, May 1, 17

Page 66: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

• left[z]=NULL,

• right[z]=NULL,

• p[z] = NULL.

• Buscamos insertar z en la posición apropiada del árbol.

Monday, May 1, 17

Page 67: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 10

Operaciones en BST: inserción

• Dado un árbol binario de búsqueda T insertar un nuevo valor v.

• Se da como entrada un nuevo nodo z para el cual:

• key[z] = v,

• left[z]=NULL,

• right[z]=NULL,

• p[z] = NULL.

• Buscamos insertar z en la posición apropiada del árbol.

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

El árbol T estaba vacío

Monday, May 1, 17

Page 68: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

Monday, May 1, 17

Page 69: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

TREE-INSERT(T,13)

Monday, May 1, 17

Page 70: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

TREE-INSERT(T,13)

Monday, May 1, 17

Page 71: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

TREE-INSERT(T,13)

Monday, May 1, 17

Page 72: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

TREE-INSERT(T,13)

Monday, May 1, 17

Page 73: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 11

Operaciones en BST: inserción

TREE-INSERT( T, z )

• y ← NULL• x ← root[ T ] 1. while x ≠ NULL2. do y ← x 3. if key[z] < key[x]4. then x ← left[x]5. else x ← right[x]• p[z] ← y• if y = NULL• then root[ T ] ← z• else if key[z] < key[y]• then left[y] ← z• else right[y] ← z

TREE-INSERT(T,13)

Monday, May 1, 17

Page 74: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 12

Operaciones en BST: eliminación

Monday, May 1, 17

Page 75: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 12

Operaciones en BST: eliminación

• Dado un árbol binario de búsqueda T eliminar un nodo determinado.

Monday, May 1, 17

Page 76: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 12

Operaciones en BST: eliminación

• Dado un árbol binario de búsqueda T eliminar un nodo determinado.

• Se da como entrada un apuntador al nodo z a borrar.

Monday, May 1, 17

Page 77: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 12

Operaciones en BST: eliminación

• Dado un árbol binario de búsqueda T eliminar un nodo determinado.

• Se da como entrada un apuntador al nodo z a borrar.

• Buscamos borrar z y arreglar el árbol para preservar sus propiedades.

Monday, May 1, 17

Page 78: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 12

Operaciones en BST: eliminación

• Dado un árbol binario de búsqueda T eliminar un nodo determinado.

• Se da como entrada un apuntador al nodo z a borrar.

• Buscamos borrar z y arreglar el árbol para preservar sus propiedades.

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y]7. if x ≠ NULL8. then p[x] ← p[y]9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y]1. 2. return y

Monday, May 1, 17

Page 79: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 13

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z //aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui, es null7. if x ≠ NULL8. then p[x] ← p[y]9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x // aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

y

Monday, May 1, 17

Page 80: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 13

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z //aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui, es null7. if x ≠ NULL8. then p[x] ← p[y]9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x // aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

TREE-DELETE(T,13)

y

Monday, May 1, 17

Page 81: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 13

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z //aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui, es null7. if x ≠ NULL8. then p[x] ← p[y]9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x // aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

z

TREE-DELETE(T,13)

y

Monday, May 1, 17

Page 82: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 13

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z //aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui, es null7. if x ≠ NULL8. then p[x] ← p[y]9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x // aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

z

TREE-DELETE(T,13)

y

Monday, May 1, 17

Page 83: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 14

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z // aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] //aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x //aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

x

y

Monday, May 1, 17

Page 84: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 14

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z // aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] //aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x //aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

TREE-DELETE(T,16)

x

y

Monday, May 1, 17

Page 85: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 14

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z // aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] //aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x //aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

z

TREE-DELETE(T,16)

x

y

Monday, May 1, 17

Page 86: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 14

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z // aqui3. else y ← TREE-SUCCESSOR(z)4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] //aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x• else right[p[y]] ← x //aqui• if y ≠ z• then key[z] ← key[y]1. copiar los datos de y a z2. return y

z

TREE-DELETE(T,16)

x

y

Monday, May 1, 17

Page 87: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 15

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z) //aqui4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] // aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x //aqui• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y] //aqui1. copiar los datos de y a z2. return y

x

Monday, May 1, 17

Page 88: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 15

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z) //aqui4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] // aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x //aqui• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y] //aqui1. copiar los datos de y a z2. return y

TREE-DELETE(T,5)

x

Monday, May 1, 17

Page 89: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

z

y

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 15

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z) //aqui4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] // aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x //aqui• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y] //aqui1. copiar los datos de y a z2. return y

TREE-DELETE(T,5)

x

Monday, May 1, 17

Page 90: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

z

y

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 15

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z) //aqui4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] // aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x //aqui• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y] //aqui1. copiar los datos de y a z2. return y

z

y

TREE-DELETE(T,5)

x

Monday, May 1, 17

Page 91: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

z

y

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 15

Operaciones en BST: eliminación

TREE-DELETE( T, z )

1. if left[z] = NULL o right[z] = NULL2. then y ← z3. else y ← TREE-SUCCESSOR(z) //aqui4. if left[y] ≠ NULL5. then x ← left[y] 6. else x ← right[y] //aqui7. if x ≠ NULL8. then p[x] ← p[y] // aqui9. if p[y] = NULL10. then root[ T ] ← x11. else if y = left[p[y]]12. then left[p[y]] ← x //aqui• else right[p[y]] ← x• if y ≠ z• then key[z] ← key[y] //aqui1. copiar los datos de y a z2. return y

z

y

TREE-DELETE(T,5)

x

Monday, May 1, 17

Page 92: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 16

Desempeño de búsqueda secuencial en diccionarios

insert search select Regresa el k-ésimo

insert hit miss

arreglo indexado por llaves

1 1 M 1 1 1

arreglo ordenado N N 1 N/2 N/2 N/2

lista ligada ordenada N N N N/2 N/2 N/2

arreglo no-ordenado 1 N ? 1 N/2 N

lista ligada no ordenada

1 N ? 1 N/2 N

búsqueda binaria N lg N 1 N/2 lg N lg N

árboles binarios de búsqueda

N N N lg N lg N lg N

peor caso caso promedio

Monday, May 1, 17

Page 93: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04

Árboles binarios de búsqueda ( BST ) y Arboles balanceados ( o equilibrados )

mat-151

Monday, May 1, 17

Page 94: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

Monday, May 1, 17

Page 95: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

Monday, May 1, 17

Page 96: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

Monday, May 1, 17

Page 97: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

• En el caso ideal quisiéramos tener arboles perfectamente balanceados que:

Monday, May 1, 17

Page 98: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

• En el caso ideal quisiéramos tener arboles perfectamente balanceados que:

• corresponden a una busqueda binaria completada en menos de lg N+1 comparaciones pero que

Monday, May 1, 17

Page 99: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

• En el caso ideal quisiéramos tener arboles perfectamente balanceados que:

• corresponden a una busqueda binaria completada en menos de lg N+1 comparaciones pero que

• es costoso mantener por sus inserciones y eliminaciones.

Monday, May 1, 17

Page 100: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

• En el caso ideal quisiéramos tener arboles perfectamente balanceados que:

• corresponden a una busqueda binaria completada en menos de lg N+1 comparaciones pero que

• es costoso mantener por sus inserciones y eliminaciones.

Monday, May 1, 17

Page 101: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 18

Desempeño de los BST

• Las operaciones presentadas para los BST funcionan bien para una gran variedad de aplicaciones pero tienen el problema de su funcionamiento en el peor caso.

• Peor caso: datos ordenados, datos con un gran número de llaves repetidas , datos en orden inverso, datos con llaves pequeñas y grandes alternadas.

• En el caso ideal quisiéramos tener arboles perfectamente balanceados que:

• corresponden a una busqueda binaria completada en menos de lg N+1 comparaciones pero que

• es costoso mantener por sus inserciones y eliminaciones.

Monday, May 1, 17

Page 102: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

Monday, May 1, 17

Page 103: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

Monday, May 1, 17

Page 104: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

Monday, May 1, 17

Page 105: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

Monday, May 1, 17

Page 106: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

• Hacer al elemento A[n/2] la raíz.

Monday, May 1, 17

Page 107: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

• Hacer al elemento A[n/2] la raíz.

• Construir el sub-árbol izquierdo con los elementos A[0...n/2-1]

Monday, May 1, 17

Page 108: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

• Hacer al elemento A[n/2] la raíz.

• Construir el sub-árbol izquierdo con los elementos A[0...n/2-1]

• Construir el sub-árbol derecho con los elementos A[n/2+1...n].

Monday, May 1, 17

Page 109: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

• Hacer al elemento A[n/2] la raíz.

• Construir el sub-árbol izquierdo con los elementos A[0...n/2-1]

• Construir el sub-árbol derecho con los elementos A[n/2+1...n].

• Pero también se puede construir un BST de altura n-1.

Monday, May 1, 17

Page 110: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 19

Árboles balanceados

• Un BST de altura h puede contener hasta 2h-1 valores.

• Dados n valores, siempre podemos construir un árbol binario de búsqueda de altura máxima de 1+log2(n).

• Ordenar los n valores en orden ascendente y ponerles en un arreglo A[0...n-1].

• Hacer al elemento A[n/2] la raíz.

• Construir el sub-árbol izquierdo con los elementos A[0...n/2-1]

• Construir el sub-árbol derecho con los elementos A[n/2+1...n].

• Pero también se puede construir un BST de altura n-1.

• Hacer A[0] la raiz, hacer A[1] el sub-árbol derecho, ...

Monday, May 1, 17

Page 111: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

Monday, May 1, 17

Page 112: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

• Para conseguir tiempos de ejecución de O(log n) es necesario tener arboles balanceados: i.e., todas las hojas deben tener casi la misma distancia a la raíz.

Monday, May 1, 17

Page 113: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

• Para conseguir tiempos de ejecución de O(log n) es necesario tener arboles balanceados: i.e., todas las hojas deben tener casi la misma distancia a la raíz.

• Esto es fácil si el contenido del árbol esta fijo (el numero de elementos).

Monday, May 1, 17

Page 114: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

• Para conseguir tiempos de ejecución de O(log n) es necesario tener arboles balanceados: i.e., todas las hojas deben tener casi la misma distancia a la raíz.

• Esto es fácil si el contenido del árbol esta fijo (el numero de elementos).

• No tan fácil si se insertan y eliminan elementos dinámicamente.

Monday, May 1, 17

Page 115: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

• Para conseguir tiempos de ejecución de O(log n) es necesario tener arboles balanceados: i.e., todas las hojas deben tener casi la misma distancia a la raíz.

• Esto es fácil si el contenido del árbol esta fijo (el numero de elementos).

• No tan fácil si se insertan y eliminan elementos dinámicamente.

• podemos intentar tener un árbol balanceado en promedio, i.e., la probabilidad de tener un árbol que no este balanceado tiende a cero mientras n→∞.

Monday, May 1, 17

Page 116: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 20

Árboles balanceados

• Para conseguir tiempos de ejecución de O(log n) es necesario tener arboles balanceados: i.e., todas las hojas deben tener casi la misma distancia a la raíz.

• Esto es fácil si el contenido del árbol esta fijo (el numero de elementos).

• No tan fácil si se insertan y eliminan elementos dinámicamente.

• podemos intentar tener un árbol balanceado en promedio, i.e., la probabilidad de tener un árbol que no este balanceado tiende a cero mientras n→∞.

• se puede tener balance determinista que garantiza balance en el peor caso: árboles rojo negros, arboles AVL, arboles 2-3, B-trees, s

Monday, May 1, 17

Page 117: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

Monday, May 1, 17

Page 118: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

Monday, May 1, 17

Page 119: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

• aleatorios (randomized)

Monday, May 1, 17

Page 120: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

• aleatorios (randomized)

• amortizados (amortized)

Monday, May 1, 17

Page 121: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

• aleatorios (randomized)

• amortizados (amortized)

• optimizados (optimized)

Monday, May 1, 17

Page 122: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

• aleatorios (randomized)

• amortizados (amortized)

• optimizados (optimized)

Monday, May 1, 17

Page 123: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 21

Desempeño de diccionarios implementados con BST

• El problema de garantizar el desempeño para diccionarios con BST nos permite describir 3 tipos de soluciones generales dentro del diseño de algoritmos:

• aleatorios (randomized)

• amortizados (amortized)

• optimizados (optimized)

• Los algoritmos aleatorios introducen decisiones aleatorias en el algoritmo mismo, reduciendo dramáticamente la probabilidad de un peor caso sin importar la entrada.

Monday, May 1, 17

Page 124: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 22

Desempeño de diccionarios implementados con BST

Monday, May 1, 17

Page 125: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 22

Desempeño de diccionarios implementados con BST

• Los algoritmos amortizados implican hacer trabajo extra en algún momento del algoritmos para evitar hacerlo después. De esta manera permite garantizar cotas superiores sobre el costo promedio por operación.

Monday, May 1, 17

Page 126: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 22

Desempeño de diccionarios implementados con BST

• Los algoritmos amortizados implican hacer trabajo extra en algún momento del algoritmos para evitar hacerlo después. De esta manera permite garantizar cotas superiores sobre el costo promedio por operación.

• El enfoque de optimización consiste en proporcionar garantías de desempeño para cada operación. Estos algoritmos requieren mantener algún tipo de información estructural en los árboles.

Monday, May 1, 17

Page 127: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

Monday, May 1, 17

Page 128: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

Monday, May 1, 17

Page 129: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

Monday, May 1, 17

Page 130: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

Monday, May 1, 17

Page 131: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

• Hay dos tipos de rotaciones: hacia la derecha y hacia la izquierda.

Monday, May 1, 17

Page 132: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

• Hay dos tipos de rotaciones: hacia la derecha y hacia la izquierda.

α

β γ

Monday, May 1, 17

Page 133: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

• Hay dos tipos de rotaciones: hacia la derecha y hacia la izquierda.

α

β γ

LEFT_ROTATE( T, x )

Monday, May 1, 17

Page 134: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

• Hay dos tipos de rotaciones: hacia la derecha y hacia la izquierda.

α

β γ α β

γ

LEFT_ROTATE( T, x )

Monday, May 1, 17

Page 135: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 23

Operaciones en BST: rotación

• Una rotación es una operación que cambia la estructura de un árbol binario de búsqueda sin interferir con el orden de sus elementos.

• Una rotación mueve un nodo hacia arriba en el árbol y uno hacia abajo.

• Se utilizan para cambiar la forma del árbol y reducir la altura, lo que resulta en una mejora en el desempeño de las otras operaciones.

• Hay dos tipos de rotaciones: hacia la derecha y hacia la izquierda.

α

β γ α β

γ

LEFT_ROTATE( T, x )

RIGHT_ROTATE( T, y )

Monday, May 1, 17

Page 136: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 24

Operaciones en BST: rotación a la derecha

Monday, May 1, 17

Page 137: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 25

Operaciones en BST: rotación

Monday, May 1, 17

Page 138: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 25

Operaciones en BST: rotación

Monday, May 1, 17

Page 139: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 25

Operaciones en BST: rotación

Monday, May 1, 17

Page 140: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

Monday, May 1, 17

Page 141: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

Monday, May 1, 17

Page 142: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

Monday, May 1, 17

Page 143: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

Monday, May 1, 17

Page 144: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

• El hijo derecho de y queda intacto y apunta al sub-árbol Z.

Monday, May 1, 17

Page 145: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

• El hijo derecho de y queda intacto y apunta al sub-árbol Z.

• El hijo derecho del nodo x cambia su apuntador al sub-árbol Y.

Monday, May 1, 17

Page 146: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

• El hijo derecho de y queda intacto y apunta al sub-árbol Z.

• El hijo derecho del nodo x cambia su apuntador al sub-árbol Y.

Monday, May 1, 17

Page 147: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

• El hijo derecho de y queda intacto y apunta al sub-árbol Z.

• El hijo derecho del nodo x cambia su apuntador al sub-árbol Y.

Monday, May 1, 17

Page 148: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 26

Operaciones en BST: rotación izquierda

• Reemplazamos el nodo raíz x por el nodo y.

• El hijo izquierdo de y apunta al nodo x.

• El hijo derecho de y queda intacto y apunta al sub-árbol Z.

• El hijo derecho del nodo x cambia su apuntador al sub-árbol Y.

Monday, May 1, 17

Page 149: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 150: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 151: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 152: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 153: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 154: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 27

Operaciones en BST: rotación

Monday, May 1, 17

Page 155: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 28

Operaciones en BST: rotación

LEFT-ROTATE( T, x )

• y ← right[x]• right[x] ← left[y] 1. if left[y] ≠ NULL2. then p[left[y]] ← x 3. p[y] ← p[x]4. if p[x] = NULL• then root[ T ] ← y• else if x = left[p[x]]• then left[p[x]] ← y• else right[p[x]] ← y• left[y] ← x• p[x] ← y

xy

Monday, May 1, 17

Page 156: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 28

Operaciones en BST: rotación

LEFT-ROTATE( T, x )

• y ← right[x]• right[x] ← left[y] 1. if left[y] ≠ NULL2. then p[left[y]] ← x 3. p[y] ← p[x]4. if p[x] = NULL• then root[ T ] ← y• else if x = left[p[x]]• then left[p[x]] ← y• else right[p[x]] ← y• left[y] ← x• p[x] ← y

xy

y

x

Monday, May 1, 17

Page 157: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

Monday, May 1, 17

Page 158: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

• El código para RIGHT-ROTATE es simétrico.

Monday, May 1, 17

Page 159: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

• El código para RIGHT-ROTATE es simétrico.

• Ambos, LEFT-ROTATE y RIGHT-ROTATE tienen un tiempo de ejecución asintótico de O(1).

Monday, May 1, 17

Page 160: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

• El código para RIGHT-ROTATE es simétrico.

• Ambos, LEFT-ROTATE y RIGHT-ROTATE tienen un tiempo de ejecución asintótico de O(1).

• Solo cambian apuntadores durante la rotación, los otros campos de la estructura nodo quedan constantes.

Monday, May 1, 17

Page 161: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

• El código para RIGHT-ROTATE es simétrico.

• Ambos, LEFT-ROTATE y RIGHT-ROTATE tienen un tiempo de ejecución asintótico de O(1).

• Solo cambian apuntadores durante la rotación, los otros campos de la estructura nodo quedan constantes.

• Invariante al recorrido en orden.

Monday, May 1, 17

Page 162: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 29

Operaciones en BST: rotación

• El código para RIGHT-ROTATE es simétrico.

• Ambos, LEFT-ROTATE y RIGHT-ROTATE tienen un tiempo de ejecución asintótico de O(1).

• Solo cambian apuntadores durante la rotación, los otros campos de la estructura nodo quedan constantes.

• Invariante al recorrido en orden.

• Las rotaciones sirven para poder re-equilibrar un BST..

Monday, May 1, 17

Page 163: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

Monday, May 1, 17

Page 164: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

Monday, May 1, 17

Page 165: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

• Idea:

Monday, May 1, 17

Page 166: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

• Idea:

• Insertar el nodo al final

Monday, May 1, 17

Page 167: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

• Idea:

• Insertar el nodo al final

• Rotar el nodo insertado hasta la raíz

Monday, May 1, 17

Page 168: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

• Idea:

• Insertar el nodo al final

• Rotar el nodo insertado hasta la raíz

• Implementación recursiva compacta.

Monday, May 1, 17

Page 169: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 30

Operaciones en BST: inserción en la raíz

• Insertar un nodo nuevo y hacerlo la nueva raíz.

• Idea:

• Insertar el nodo al final

• Rotar el nodo insertado hasta la raíz

• Implementación recursiva compacta.

Monday, May 1, 17

Page 170: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 31

Operaciones en BST: inserción en la raíz

Monday, May 1, 17

Page 171: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 31

Operaciones en BST: inserción en la raíz

Monday, May 1, 17

Page 172: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 32

Operaciones en BST: inserción en la raíz

Monday, May 1, 17

Page 173: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 32

Operaciones en BST: inserción en la raíz

• Las llaves insertadas recientemente se encuentran arriba (esto es bueno para algunas aplicaciones)

• También es bueno para una construcción aleatoria.

Monday, May 1, 17

Page 174: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

Monday, May 1, 17

Page 175: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

Monday, May 1, 17

Page 176: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

Monday, May 1, 17

Page 177: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

Monday, May 1, 17

Page 178: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

Monday, May 1, 17

Page 179: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

Monday, May 1, 17

Page 180: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

Monday, May 1, 17

Page 181: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

Monday, May 1, 17

Page 182: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

Monday, May 1, 17

Page 183: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

Monday, May 1, 17

Page 184: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

Monday, May 1, 17

Page 185: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

Monday, May 1, 17

Page 186: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

Monday, May 1, 17

Page 187: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

Monday, May 1, 17

Page 188: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

Monday, May 1, 17

Page 189: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

TREE-INSERT(H)

Monday, May 1, 17

Page 190: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

TREE-INSERT(H)

Monday, May 1, 17

Page 191: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

TREE-INSERT(H)

TREE-INSERT(I)

Monday, May 1, 17

Page 192: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 33

BST de construcción aleatoria

• Un árbol binario de búsqueda construido de forma aleatoria es aquel que resulta de insertar las llaves en orden aleatorio en un árbol inicialmente vacío, y donde cada una de las n! permutaciones tiene la misma probabilidad de ocurrir.

TREE-INSERT(A)

TREE-ROOT-INSERT(B)

TREE-INSERT(C)

TREE-INSERT(D)

TREE-INSERT(E)

TREE-ROOT-INSERT(F)

TREE-INSERT(G)

TREE-INSERT(H)

TREE-INSERT(I)

Monday, May 1, 17

Page 193: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 34

BST de construcción aleatoria

Monday, May 1, 17

Page 194: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 34

BST de construcción aleatoria

• Hay una probabilidad que el generador de números aleatorios pueda llevar a la mala decisión en cada oportunidad y construir un árbol mal balanceado pero esta probabilidad es muy pequeña.

Monday, May 1, 17

Page 195: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 35

BST de construcción aleatoria

Resultado de la inserción aleatoria de 100 nodos.

Monday, May 1, 17

Page 196: Árboles binarios de búsqueda ( BST )alram/comp_algo/clase18.pdf · Arbol Binario de Búsqueda • Un árbol binario de búsqueda (Binary Search Tree [BST]) es un árbol binario

Alonso Ramírez Manzanares Computación y Algoritmos 25.04 36

¿ Cómo implementamos la operación select? (la que regresa el k-ésimo elemento)

Dado un BST

Monday, May 1, 17