| @@ -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: | ||||