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 DSFBase::findSet(size_t key) const {
size_t parent = (*v_)[key];
// follow parent pointers until we reach set representative // follow parent pointers until we reach set representative
while (parent != key) { size_t parent = (*v_)[key];
key = parent; if (parent != key)
parent = (*v_)[key]; parent = findSet(parent); // recursive call
} (*v_)[key] = parent; // path compression
return parent; return parent;
} }