【发布时间】:2010-09-03 00:00:29
【问题描述】:
有没有人知道一种快速检测TreeSet 中给定元素处于什么级别的方法?层级是指该元素在树中的深度,即其祖先的数量。
背景。 我使用 Java 的 TreeSet 类来存储我的元素。 为了比较两个元素,我需要计算一些关于它们的辅助信息。我无法为每个元素存储这些辅助信息,因为它会占用太多内存。 另一方面,如果我为每次比较重新生成辅助信息,我的程序就太慢了。 当一个元素被插入到 TreeSet 中时,我当前的实现会计算它插入的元素的辅助信息,并且在元素在 TreeSet 中找到它的位置之前不会重新计算它。之后,辅助信息被丢弃。 为了加快我的程序,我还想为 TreeSet 的顶层存储辅助信息,因为它们涉及许多比较。所以,在比较两个节点之后,我想根据它们在TreeSet中的深度来决定是保留还是丢弃它们的辅助信息。
更新。 如果有人可以建议一个替代类来实现某种平衡树(AVL树、红/黑树、Splay树……),并且可以访问高度,我也将不胜感激一个元素。
【问题讨论】:
-
TreeSet 是一个Set,它是一个Collection,它是扁平的。它不存储任何分层信息。
-
@Steve:有没有更符合我需求的标准课程?
标签: java collections binary-tree treeset