[62]
CAPÍTULO 2. C++ AVANZADO
mantienen un atributo parent que apunta al nodo padre, y un par de punteros left y right que apuntan al hijo por la izquierda y por la derecha respectivamente. A su vez cada hijo puede tener otros nodos hijos, por lo que realmente cada nodo cuenta con dos subárboles (izquierdo y derecho).
Las operaciones básicas de los árboles se ejecutan en un tiempo proporcional a la altura del árbol. Eso implica O(log n) en el caso peor si está correctamente balanceado, pero O(n) si no lo está.
Árboles de búsqueda binaria
10
1
4 1
17 5
16
4 21
10 5
17 16
21
Figura 2.2: Dos árboles de búsqueda binaria. Ambos contienen los mismos elementos pero el de la izquierda es mucho más eficiente.
Los árboles de búsqueda binaria se definen por la siguiente propiedad: Todos los nodos del subárbol izquierdo de un nodo tienen una clave menor o igual a la de dicho nodo. Análogamente, la clave de un nodo es siempre menor o igual que la de cualquier otro nodo del subárbol derecho. Por tratarse del primer tipo de árboles expondremos con cierto detalle su implementación. Como en cualquier árbol necesitamos modelar los nodos del árbol, que corresponden a una simple estructura: