Data structures 在八字树(自上而下的八字版本)上,如何维护节点不变量?

Data structures 在八字树(自上而下的八字版本)上,如何维护节点不变量?,data-structures,splay-tree,top-down,Data Structures,Splay Tree,Top Down,我试图实现一个具有自顶向下展开的展开树,就像这里描述的()一样(第一个)。我已经实现了一个自底向上的展开版本,它还可以在每个节点上维护子树的大小,其中子树是该节点的根(即,size=1+left->size+right->size) 与每次展开操作一样,我将一个节点向上移动到根节点,不必在每次旋转时更新所有的祖先节点。但是现在在自上而下的版本中,我不明白如何在每个节点(以及其他类型的不变量)上保持子树大小值,而不使用每次旋转递归地更新祖先 简而言之,在执行自上而下的展开操作时,如何保持每个节点的

我试图实现一个具有自顶向下展开的展开树,就像这里描述的()一样(第一个)。我已经实现了一个自底向上的展开版本,它还可以在每个节点上维护子树的大小,其中子树是该节点的根(即,size=1+left->size+right->size)

与每次展开操作一样,我将一个节点向上移动到根节点,不必在每次旋转时更新所有的祖先节点。但是现在在自上而下的版本中,我不明白如何在每个节点(以及其他类型的不变量)上保持子树大小值,而不使用每次旋转递归地更新祖先


简而言之,在执行自上而下的展开操作时,如何保持每个节点的子树大小?(最好有一个上面提到的页面上描述的splay操作的修改版本)

您可能正在寻找该实现


我在
c
中实现了一个自上而下的splay。可能与您正在寻找的相关