Creo que debería haber alguna razón importante por la que decidieron no incluirlo en la API de colecciones.
creo que la razón es que nadie ha llegado con una buena API para los árboles que sea de uso general
- suficiente para cubrir una amplia gama de casos de uso, y
- útil lo suficiente como para compensar los gastos generales de rendimiento de ser general.
(¿Y dónde deja? Árbol? Árbol binario? N-aria árbol? DAG? Gráfico?)
Vale la pena señalar que ni Apache Commons Las colecciones o Google Colecciones (también conocido como guayaba) tienen una árbol API. Sin embargo, existe un problema de Guava activo sobre este tema - http://code.google.com/p/guava-libraries/issues/detail?id=174 - por lo que claramente al menos algunas personas están de acuerdo con su punto de vista.
ACTUALIZACIÓN
partir de la versión 15.0, guayaba tienen ahora un respaldo árbol en la forma de las clases TreeTraverser
y BinaryTreeTraverser
. Pero esto puede no ser lo que esperas. En verdad, estas clases en realidad no implementan la estructura de datos de árbol. En cambio, debe hacer esto en un parámetro de tipo genérico. Además de eso, las clases Traverser
incluso evitan hacer suposiciones sobre las API del tipo de nodo. Lo hacen por ser clases abstractas, y requieren que el subtipo concreto del trasversor implemente las operaciones que interrogan al árbol; p.ej. para obtener los hijos de un nodo.
Fwiw, TreeMap
y TreeSet
no son "API de árboles". Son implementaciones basadas en árbol de las API Map
y Set
. El tree-ness está totalmente oculto por las API públicas, lo que hace que estas dos clases sean completamente inadecuadas para su uso como árboles de uso general.
yup, de hecho interesante – Eugene
TreeSet y TreeMap son dos colecciones respaldadas por un árbol binario. –
No hablo solo del árbol binario, ¿por qué no tenemos una implementación de árbol generalizada, una interfaz de árbol? –