【发布时间】:2012-04-10 22:21:07
【问题描述】:
我不太明白为什么splay树数据结构中的旋转不仅考虑了评级节点的父节点,还考虑了祖父节点(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
}
这应该避免整个“展开”过程,你不觉得吗?
【问题讨论】:
-
运行测试版Computer Science 网站的人们可能真的很乐意帮助您解决这个问题。
-
这与本网站无关吗?
-
我会说它是相关的,但是自从 CS 网站最近成立以来,像您这样的算法问题可能更接近 CS 感兴趣的领域。此外,它们处于测试阶段,因此他们肯定会喜欢增加的流量和更多的主题问题。
标签: data-structures tree rotation splay-tree tree-balancing