Я не зовсім розумію, чому обертання в структурі даних дерева splay враховує не тільки батьківського вузла рейтингу, але й бабусю і дідуся (операція зіг-заг та зиг-зиг). Чому б наступне не працювало:
Наприклад, коли ми вставляємо, наприклад, новий вузол до дерева, ми перевіряємо, чи вставляємо його в ліве або праве піддерево. Якщо ми вставимо вліво, ми повернемо результат ВПРАВО, і навпаки для правого піддерева. Рекурсивно було б так, як це
Tree insert(Tree root, Key k){
if(k < root.key){
root.setLeft(insert(root.getLeft(), key);
return rotateRight(root);
}
//vice versa for right subtree
}
Це повинно уникати всієї процедури "хитрощі", ви не думаєте?