Browse Source

avl_tree: fixing tests

undefined
Guillaume Bittoun Sam Hocevar <sam@hocevar.net> 10 years ago
parent
commit
9b46f5d22b
2 changed files with 9 additions and 7 deletions
  1. +8
    -6
      src/lol/algorithm/avl_tree.h
  2. +1
    -1
      src/t/algorithm/avl_tree.cpp

+ 8
- 6
src/lol/algorithm/avl_tree.h View File

@@ -123,14 +123,16 @@ protected:


if (this->get_balance() == 2) if (this->get_balance() == 2)
{ {
return this->rotate(CW);
return this->rotate(CCW);
} }
else if (this->get_balance() == -2) else if (this->get_balance() == -2)
{ {
return this->rotate(CCW);
return this->rotate(CW);
} }
else else
ASSERT(lol::abs(this->m_stairs_lo - this->m_stairs_hi) < 3);
ASSERT(lol::abs(this->m_stairs_hi - this->m_stairs_lo) < 3);

return 0;
} }


enum Rotation { CW = 0, CCW = 1 }; enum Rotation { CW = 0, CCW = 1 };
@@ -169,13 +171,13 @@ protected:


void compute_balance() void compute_balance()
{ {
this->m_stairs_lo = this->m_lo ? this->m_lo->m_stairs_lo + this->m_lo->m_stairs_hi : 0;
this->m_stairs_hi = this->m_hi ? this->m_hi->m_stairs_lo + this->m_lo->m_stairs_hi : 0;
this->m_stairs_lo = this->m_lo ? this->m_lo->m_stairs_lo + this->m_lo->m_stairs_hi + 1 : 0;
this->m_stairs_hi = this->m_hi ? this->m_hi->m_stairs_lo + this->m_hi->m_stairs_hi + 1 : 0;
} }


int get_balance() int get_balance()
{ {
return this->m_stairs_lo - this->m_stairs_hi;
return this->m_stairs_hi - this->m_stairs_lo;
} }


protected: protected:


+ 1
- 1
src/t/algorithm/avl_tree.cpp View File

@@ -59,7 +59,7 @@ lolunit_declare_fixture(AvlTreeTest)
lolunit_assert_equal(tree.get_root_balance(), -1); lolunit_assert_equal(tree.get_root_balance(), -1);


lolunit_assert_equal(tree.insert(-1, 1), true); lolunit_assert_equal(tree.insert(-1, 1), true);
lolunit_assert_equal(tree.get_root_balance(), 0);
lolunit_assert_equal(tree.get_root_balance(), -1);
} }
}; };




Loading…
Cancel
Save