Joh*_*ith 7 java algorithm treeset data-structures
在我的代码中,Java TreeSet迭代是主要的时间因素.在查看系统时,我认为它是O(n)复杂性.任何人都可以验证吗?
我想通过提供从子节点到父节点的向后链接,我可以提高性能.
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;
}
}
Run Code Online (Sandbox Code Playgroud)