Более-менее разобравшись с теоретической частью достаточно интересной структуры данных splay-дерево, я понял, что пришло время всю эту муть реализовать. И вроде бы по началу все было не плохо, но сие чудо в упор не хочет выполнять сплэй элемента при его удалении. В крайнем отчаянии я начал копипастить куски кода с википедии, дошло до того, что моего кода практично то и не осталось. Возможно мой код и не самый изящный, но все же прошу помощи в поисках бага.
П.С. Интересно было бы услышать от знающих людей, какие могут быть применения этой структуры помимо вырезать/вставить отрезок.
UPD. Почему при поднятии вершины в корень(то есть при сплее) нам нужно прописывать целых шесть случаев вместо того чтобы просто делать одиночный повороты?
(\/)(*--*)(\/)
Немного не по теме, но для поддержания корректного потенциала нужно делать splay и в случаях доступа к элементу: поиск (если просто find, а не часть какой-либо другой операции), доступ по индексу. Иначе можно нарваться на квадрат по сложности.
куку