Я не совсем понимаю, почему при ротации в структуре данных Splay Tree учитывается не только родительский узел рейтингового узла, но и прародитель (операция zig-zag и zig-zig). Почему следующее не работает:
Когда мы вставляем, например, новый узел в дерево, мы проверяем, вставляем ли мы в левое или правое поддерево. Если мы вставим в левое, мы повернем результат вправо, и наоборот для правого поддерева. Рекурсивно это было бы что-то вроде этого
Tree insert(Tree root, Key k){
if(k < root.key){
root.setLeft(insert(root.getLeft(), key);
return rotateRight(root);
}
//vice versa for right subtree
}
Это должно избежать всей процедуры "splay", вы не думаете?