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