我不明白为什么在splay tree数据结构中的旋转不仅考虑了评级节点的父级,还考虑了祖父级(Zig-zag和Zig-zig操作)。为什么下面不工作: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
}
这应该避免整个“splay”程序,你不觉得吗?
乡亲运行测试[计算机科学](http://cs.stackexchange.com/)网站可能是真的很高兴帮你出了这个问题。 – Jan 2012-04-10 22:25:51
与这个网站无关? – Bober02 2012-04-10 22:33:22
我想说它是相关的,但是因为最近CS网站开始的时候,像你这样的算法问题可能更接近CS的兴趣领域。此外,它们处于测试阶段,因此他们肯定会欣赏增加的流量和更多的主题问题。 – Jan 2012-04-10 22:43:20