Bläddra i källkod

avl_tree: fixing insertion (no test so far)

undefined
Guillaume Bittoun Sam Hocevar <sam@hocevar.net> 10 år sedan
förälder
incheckning
f318af9b03
1 ändrade filer med 16 tillägg och 6 borttagningar
  1. +16
    -6
      src/lol/base/avl_tree.h

+ 16
- 6
src/lol/base/avl_tree.h Visa fil

@@ -141,22 +141,32 @@ private:
this->m_lo->m_hi = this;
this->m_lo = lo_hi;

// TODO : Rebalance
this->compute_balance();
lo_hi->compute_balance();

return lo;
}
else // rotation == CCW
{
tree_node * lo = this->m_lo;
tree_node * lo_hi = this->m_lo->m_hi;
tree_node * hi = this->m_hi;
tree_node * hi_lo = this->m_hi->m_lo;

this->m_lo->m_hi = this;
this->m_lo = lo_hi;
this->m_hi->m_lo = this;
this->m_hi = hi_lo;

// TODO : Rebalance
this->compute_balance();
hi_lo->compute_balance();

return lo;
}

return 0;
}

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;
}

private:


Laddar…
Avbryt
Spara