[英]What is the time complexity of TreeSet iteration?
TreeSet
迭代当然是O(n),可以从任何合理的树行走算法中得到。
我想通过提供从子节点到父节点的向后链接,我可以提高性能。
TreeMap
( TreeSet
所基于的)已经有这样的父引用。 这是所有归结为的方法:
private Entry<K,V> successor(Entry<K,V> t) {
if (t == null)
return null;
else if (t.right != null) {
Entry<K,V> p = t.right;
while (p.left != null)
p = p.left;
return p;
} else {
Entry<K,V> p = t.parent;
Entry<K,V> ch = t;
while (p != null && ch == p.right) {
ch = p;
p = p.parent;
}
return p;
}
}
您是否考虑过更改TreeSet的副本? 如果在TreeSet迭代中花费了支配时间(而不是修改它),那么将TreeSet复制到数组或ArrayList(仅在更改时)并且仅迭代此数组/ ArrayList几乎可以消除TreeSet迭代的成本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.