61
Árboles RN (Rojo-Negro) (Red-Black Trees)

Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN(Rojo-Negro)

(Red-Black Trees)

Page 2: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Árboles Rojo-Negro (Red-Black trees):

Inicialmente conocido como Árbol-B binario simétrico.

Guibas, Leo J., and Robert Sedgewick. "A dichromatic framework for balanced trees." 19th Annual Symposium on Foundations of Computer Science. IEEE, 1978.

Page 3: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Árboles Rojo-Negro (Red-Black trees):

Como los árboles AVL, garantiza que las operaciones de búsqueda, inserción y eliminación en un árbol binario ordenado toman en el peor caso O(log n).

Requiere que el nodo del árbol incluya una propiedad adicional de color (rojo o negro).

Page 4: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Propiedades a garantizar:

1. Cada nodo es rojo o negro.

2. La raíz y las hojas (nulos) son siempre negras.

3. Si un nodo es rojo, entonces su padre es negro.

4. Cada nodo rojo debe tener dos hijos negros.

5. Todas las rutas desde un nodo x hacia un descendiente hoja tienen el mismo número de nodos negros (altura-negra(x)).

Page 5: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

NULL

NULL NULL

NULL NULL NULL NULL

NULL NULL NULL NULL

Page 6: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Se realiza como en un árbol binario ordenado.

¿Cuál debe ser el color del nuevo nodo?– Negro

Page 7: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Se realiza como en un árbol binario ordenado.

¿Cuál debe ser el color del nuevo nodo?– Negro, causa una diferencia en el número de

nodos negros en una ruta, incumpliendo la propiedad 5, y es una situación más difícil de corregir.

Page 8: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Se realiza como en un árbol binario ordenado.

¿Cuál debe ser el color del nuevo nodo?– Entonces siempre lo pintaremos rojo.

Page 9: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Se realiza como en un árbol binario ordenado.

¿Cuál debe ser el color del nuevo nodo?– Entonces siempre lo pintaremos rojo.

¿Y si el padre del nodo es rojo?– Se incumple la propiedad 3, pero se puede arreglar

con rotaciones o cambiando el color de los ancestros.

Page 10: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Caso 1: el nodo insertado es la raíz del árbol (primera inserción en un árbol vacío).

- en este caso, el nodo se repinta a negro, para cumplir la propiedad 2.

11

NULL NULL

11

NULL NULL

Page 11: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Caso 2: el padre del nodo insertado es negro.

- en este caso, el árbol es válido sin ninguna modificación.

11

NULL2

NULL NULL

11

2

NULL NULL

14

NULL NULL

Page 12: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción:

Caso 3: el padre del nodo insertado es rojo, se analizan varias situaciones:– Situación 1: Que el tío del nodo (hermano del

padre) sea rojo.

En ese caso, se cambia el color del padre, del tío y del abuelo.

Page 13: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

5 8

1

2

11

14

15

Insertar 4

Page 14: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

5 8

1

2

11

14

15

1

2

11

14

157

4

5 8

nuevo

Insertar 4

Page 15: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

4

5 8

1

2

11

14

15

nuevo

tío

Page 16: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

4

5 8

7

4

5 8

1

2

11

14

15

1

2

11

14

15nuevo

tío

Page 17: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

4

5 8

7

4

5 8

1

2

11

14

15

1

2

11

14

15nuevo

tío

problema!

Page 18: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción

Caso 3: el padre del nodo insertado es rojo, se analizan varias situaciones:– Situación 2: Que el tío del nodo (hermano del

padre) sea negro y el nodo sea el hijo derecho del padre.

En ese caso, se aplica una rotación a izquierda sobre el nodo.

Page 19: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

1

2

11

14

157

4

5 8

hijoderecho

tío

Page 20: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

4

5

8

1

2

11

14

15 11

14

15

7

4

5 8

1

2

hijoderecho

tío

Page 21: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

7

4

5

8

1

2

11

14

15 11

14

15

7

4

5 8

1

2

hijoderecho

tío

problema!

Page 22: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Inserción

Caso 3: el padre del nodo insertado es rojo, se analizan varias situaciones:– Situación 3: Que el tío del nodo (hermano del

padre) sea negro y el nodo sea el hijo izquierdo del padre.

En ese caso, se cambia el color del padre y del abuelo, y luego se aplica una rotación a derecha sobre el abuelo.

Page 23: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN11

14

15

7

4

5

8

1

2hijo

izquierdo

tío

Page 24: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN11

14

15

7

4

5

8

1

2hijo

izquierdo

tío

11

14

15

7

4

5

8

1

2hijo

izquierdo

tío

Page 25: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

8

11

14

15

14

15

7

4

5

8

1

2

11

7

4

51

2

hijoizquierdo

tío

Page 26: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Eliminación:

Se consideran los mismos casos de eliminación que en un árbol binario ordenado:– Eliminar un nodo hoja.– Eliminar un nodo con un solo hijo (derecho o

izquierdo).– Eliminar un nodo con dos hijos.

Page 27: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Eliminación:

... pero además hay que tener en cuenta el color del nodo a eliminar ...

Si se elimina un nodo rojo, usualmente las propiedades se siguen manteniendo.

Si se elimina un nodo negro, es necesario identificar las opciones de cambio de color y rotación para garantizar las propiedades del árbol.

Page 28: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles RN

● Applet de demostración

http://www.cs.usfca.edu/~galles/visualization/RedBlack.html

Page 29: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árbol RN en la STL

● #include <set>– std::set< T >

– std::multiset< T >

● #include <map>– std::map< K, T >

– std::multimap< K, T >

Page 30: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

STL: std::set< T >

● Se “ve” como una lista ordenada de elementos únicos.

● T debe ser un tipo de “ordenamiento estrictamente débil” (strict weak ordering).– i.e. Debe existir el operador “<” para T.

std::set< T >::insert( const T& v );

std::set< T >::erase( iterator pos );

std::set< T >::[r]begin( );

std::set< T >::[r]end( );

Page 31: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

STL: std::map< K, T >

● Se “ve” como un vector dinámico de índices de elementos únicos.

● K debe ser un tipo de “ordenamiento estrictamente débil” (strict weak ordering).– i.e. Debe existir el operador “<” para K.

std::map< int, float > v; float ↔v[ MAX ];

std::map< K, T >::iterator it;

it->first; // K

it->second; // T

Page 32: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces
Page 33: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículos(heaps)

Page 34: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Estructura basada en árboles completos:

Todos los niveles, salvo el último, tienen el máximo número de nodos posibles.

En el último nivel, si no está lleno, todos los nodos deben estar concentrados hacia el lado izquierdo.

Page 35: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Satisface la propiedad:

Si A es el nodo padre de B, el valor de A está ordenado con respecto al valor de B con la misma propiedad de ordenamiento a lo largo del montículo.

● Montículo máximo (max heap): si el valor del padre es siempre mayor o igual que el valor de sus hijos (máximo en la raíz).

● Montículo mínimo (min heap): si el valor del padre es siempre menor o igual que el valor de sus hijos (mínimo en la raíz).

Page 36: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● No importa la relación de orden entre hermanos.

Ejemplo max heap:

12 9

15

08

7

10

53

6

2 1

Page 37: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● No importa la relación de orden entre hermanos.

Ejemplo min heap:

5 2

1

43

6

8

1013

7

9 11

Page 38: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción:

Puede requerir el restablecimiento de la propiedad de ordenamiento del montículo.

1. Añadir el elemento en la “última” posición.

2. Comparar el valor del nodo con su padre:

2.1 si están en el orden correcto, terminar.

2.2 si no, intercambiar el elemento con su padre y retornar al paso 2.

Depende de la altura del montículo → O(log n).

Page 39: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción: insertar 11.

12 9

15

08

7

10

53

6

2 1

Page 40: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción: insertar 11.

12 9

15

08

7

10

53

6

2 1 11

Page 41: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción: insertar 11.

12 9

15

08

7

10

53

6

2 1 11

Page 42: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción: insertar 11.

12 9

15

011

7

10

53

6

2 1 8

Page 43: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Inserción: insertar 11.

12 11

15

09

7

10

53

6

2 1 8

Page 44: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

Corresponde a eliminar el nodo de la raíz, y restaurar la propiedad de ordenamiento.

1. Reemplazar la raíz con el “último” elemento.

2. Comparar la nueva raíz con sus hijos:

2.1 si están en el orden correcto, terminar.

2.2 si no, intercambiar el elemento con uno de sus hijos (el mínimo en min heap y el máximo en max heap) y retornar al paso 2.

Depende de la altura del montículo → O(log n).

Page 45: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

12 11

15

09

7

10

53

6

2 1 8

Page 46: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

12 11

15

09

7

10

53

6

2 1 8

Page 47: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

12 11

8

09

7

10

53

6

2 1

Page 48: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

8 11

12

09

7

10

53

6

2 1

Page 49: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Eliminación:

10 11

12

09

7

8

53

6

2 1

Page 50: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación:

Representación utilizando un arreglo:

No se requieren apuntadores, sólo aritmética de índices dentro del arreglo.

0

1 2

3 4 5 6

Page 51: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación: aritmética de índices:

n: número de elementos en el montículo.i: índice dentro del arreglo (0 hasta n-1).

Raíz: posición (índice) 0 del arreglo.

Cualquier elemento a con índice i tiene.

– sus hijos en las posiciones 2i+1 y 2i+2.

– su padre en la posición ⌊(i-1)/2⌋( ...⌊ ⌋: función piso o parte entera).

Page 52: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación:

10 11

12

09

7

8

53

6

2 1

12 10 11 8 6 9 0 3 5 2 1 7

Page 53: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación:usando cualquier contenedor de la STL.

#include <algorithm>

std::push_heap( it_begin, it_end )

std::pop_heap( it_begin, it_end )

std::is_heap( it_begin, it_end )

std::sort_heap( it_begin, it_end )

std::make_heap( it_begin, it_end )

Page 54: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación: usando la STL.

Inserción: en el contenedor, luego en el montículo.

std::deque< T > vec;

while( there_is_data )

{

T new_data = get_next_data( );

vec.push_back( new_data );

std::push_heap( vec.begin( ), vec.end( ) );

}

Page 55: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Implementación: usando STL:

Eliminación: del montículo, luego del contenedor.

std::deque< T > vec;

std::pop_heap( vec.begin( ), vec.end( ) );

T elim_data = vec.back( );

vec.pop_back( );

Page 56: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Ejercicio:

Insertar los siguientes elementos en un montículo máximo:

12, 6, 14, 2, 13, 8, 19, 5, 1, 11, 21, 10, 7, 3

Page 57: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

19 14

21

5

12

13

6 11

10

78

12

3

21 19 14 5 13 10 12 2 1 6 11 8 7 3

Page 58: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

● Ejercicio:

Insertar los mismos elementos, ahora en un montículo mínimo:

12, 6, 14, 2, 13, 8, 19, 5, 1, 11, 21, 10, 7, 3

Page 59: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Montículo (heap)

1 2 3 5 11 8 7 12 6 13 21 14 10 19

2 3

1

5

612

11

13 21

8

1014

7

19

Page 60: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Árboles

● Implementaciones de:

- Árbol general (Arbol), nodo general (Nodo).

- Árbol binario ordenado (ArbolBinarioOrd), nodo binario (NodoBinario).

- Árbol AVL (ArbolAVL), nodo AVL (NodoAVL).

- Árbol RN (implementación STL).

- Montículo máximo (implementación STL).

Page 61: Árboles RN (Rojo-Negro) · Árboles RN Propiedades a garantizar: 1. Cada nodo es rojo o negro. 2. La raíz y las hojas (nulos) son siempre negras. 3. Si un nodo es rojo, entonces

Referencias

● L. Joyanes Aguilar, I. Zahonero. Algoritmos y estructuras de datos: una perspectiva en C. McGraw-Hill, 2004.

● www.cs.duke.edu/~reif/courses/alglectures/skiena.lectures/lecture10.pdf

● www.cse.ohio-state.edu/~gurari/course/cis680/cis680Ch11.html

● www.stolerman.net/studies/cs521/red_black_trees.pdf

● http://lcm.csa.iisc.ernet.in/dsa/node114.html● en.wikipedia.org/wiki/Red-black_tree