Procházet zdrojové kódy

avl_tree: fixing insertion (no test so far)

undefined
Guillaume Bittoun Sam Hocevar <sam@hocevar.net> před 11 roky
rodič
revize
f318af9b03
1 změnil soubory, kde provedl 16 přidání a 6 odebrání
  1. +16
    -6
      src/lol/base/avl_tree.h

+ 16
- 6
src/lol/base/avl_tree.h Zobrazit soubor

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


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


return lo; return lo;
} }
else // rotation == CCW 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 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: private:


Načítá se…
Zrušit
Uložit