búsqueda binaria de 1,000,000 de elementos (estrechamente empaquetado) requiere cuando mucho de 20 com-
paraciones, ya que 2

20

 > 1,000,000.

Los ejercicios de este capítulo presentan algoritmos para varias operaciones más de árboles binarios, como 

eliminar un elemento de un árbol binario, imprimir un árbol binario en formato de árbol bidimensional y realizar 
un 

recorrido en orden de niveles de un árbol binario

. En el recorrido en orden de niveles de un árbol binario 

se visitan sus nodos fi la por fi la, empezando en el nivel del nodo raíz. En cada nivel del árbol, un recorrido en 
orden de niveles visita los nodos de izquierda a derecha. Otros ejercicios de árboles binarios incluyen el permitir 
que un árbol de búsqueda binaria contenga valores duplicados, insertar valores de cadena en un árbol binario y 
determinar cuántos niveles hay en un árbol binario. En el capítulo 19 continuaremos con nuestra discusión sobre 
las estructuras de datos, al presentar las estructuras de datos incluidas en la API de Java.

17.10 Conclusión

En este capítulo aprendió acerca de las clases de envoltura de tipos, la conversión boxing y las estructuras dinámi-
cas de datos, que aumentan y reducen su tamaño en tiempo de ejecución. Aprendió que cada tipo primitivo tiene 
su correspondiente clase de envoltura de tipo en el paquete 

java.lang

. También vio que Java puede realizar con-

versiones entre valores primitivos y objetos de las clases de envoltura de tipos, mediante la conversión boxing.

Aprendió que las listas enlazadas son elementos de datos que están “alineados en una fi la”. También vio que 

una aplicación puede realizar operaciones de inserción y eliminación de datos en cualquier parte de una lista 
enlazada. Aprendió que las estructuras de datos tipo pila y cola son versiones restringidas de listas. En cuanto 
a las pilas, vio que las operaciones de insertar y eliminar datos se realizan sólo en la parte superior. En cuanto a 
las colas que representan líneas de espera, vio que las inserciones se realizan en la parte fi nal (cola) y las elimi-
naciones se realizan en la parte frontal (cabeza). También aprendió acerca de la estructura de datos tipo árbol 
binario. Vio un árbol de búsqueda binaria que facilita la búsqueda y el ordenamiento de los datos de alta veloci-
dad, además de que se pueden eliminar los elementos de datos duplicados de una manera efi ciente. A lo largo de 
este capítulo, aprendió a crear y empaquetar estas estructuras de datos para reutilizarlas y darles mantenimiento.

En el capítulo 18, Genéricos, presentaremos un mecanismo para declarar clases y métodos sin información 

específi ca sobre los tipos, de manera que las clases y métodos se puedan utilizar con muchos tipos distintos. Los 
genéricos se utilizan ampliamente en el conjunto integrado de estructuras de datos de Java, el cual se conoce como 
la API Colecciones, que veremos en el capítulo 19.

Resumen

Sección 17.1 Introducción

•  Las estructuras de datos dinámicas pueden crecer y reducirse en tiempo de ejecución.
•  Las listas enlazadas son colecciones de elementos de datos “alineados en una fi la”; pueden insertarse y eliminarse 

elementos en cualquier parte de una lista enlazada.

•  Las pilas son importantes en los compiladores y sistemas operativos; pueden insertarse y eliminarse elementos sola-

mente en un extremo de una pila: su parte superior.

•  En una cola se insertan elementos en la parte fi nal (cola) y se eliminan de su parte inicial (cabeza).
•  Los árboles binarios facilitan la búsqueda y ordenamiento de los datos de alta velocidad, la eliminación efi ciente de 

elementos de datos duplicados, la representación de directorios del sistema de archivos y la compilación de expresio-
nes en lenguaje máquina.

Sección 17.2 Clases de envoltura de tipos para los tipos primitivos

•  Las clases de envoltura de tipos (por ejemplo, 

Integer

Double

Boolean

) permiten a los programadores manipular 

valores de tipos primitivos como objetos. Los objetos de estas clases se pueden utilizar en colecciones y estructuras 
de datos que sólo pueden almacenar referencias a objetos, y no valores de tipos primitivos.

Sección 17.3 Autoboxing y autounboxing

•  Una conversión boxing convierte un valor de un tipo primitivo en un objeto de su clase de envoltura de tipo corres-

pondiente. Una conversión unboxing convierte un objeto de una clase de envoltura de tipo en un valor del tipo 
primitivo correspondiente.

Resumen

739

17_MAQ_CAP_17_DEITEL.indd739

4/19/081:30:11AM