Added path compression

release/4.3a0
Frank Dellaert 2013-10-26 15:25:56 +00:00
parent ddd7c6663f
commit 42fda7913f
1 changed files with 4 additions and 5 deletions

View File

@ -43,12 +43,11 @@ DSFBase::DSFBase(const boost::shared_ptr<V>& v_in) {
/* ************************************************************************* */
size_t DSFBase::findSet(size_t key) const {
size_t parent = (*v_)[key];
// follow parent pointers until we reach set representative
while (parent != key) {
key = parent;
parent = (*v_)[key];
}
size_t parent = (*v_)[key];
if (parent != key)
parent = findSet(parent); // recursive call
(*v_)[key] = parent; // path compression
return parent;
}