繁体   English   中英

八字树中的ZigZag和ZigZig操作?

[英]ZigZag and ZigZig operation in splay tree?

认为我的树是这样的

                 5
                / \
               3   7
              / \ / \
             2  4 6  8

在这种情况下,当我们搜索元素2 ,将执行时间之字形运算,因此首先旋转2的parent and ancestor of 2 ,然后旋转1的parent and 2

在同一情况下,假设我们正在搜索4 ,则将执行时间之字形操作。 首先,我们旋转4 and its parent然后旋转4 and its ancestor

为什么我们在锯齿形中这样做,为什么我们不旋转parent and ancestor而不是searching node and parent

请解释一下我吗? 提前致谢。

旋转顺序很重要。 这就是使分析在每m个操作序列中摊销每个操作的O(lg n)时间的原因。 splay(x)启发式将节点x移动到树的根部,而不是仅旋转x直到它成为根部,之字形步骤首先旋转x的父级,然后旋转x。 例如,如果我们只是旋转x直到它成为根,那么分析将不会产生有用的信息。

您在这里描述的是不同的东西。 您要始终先旋转父级,然后再旋转子级。 如果您认为确实需要,则需要正式证明这种启发式是好的,但是要回答这个问题:展开树中的旋转顺序可确保在m个操作序列上绑定O(m lg n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM