我不太明白为什么 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
}
那应该避免整个“张开”过程,你不觉得吗?