我正在使用嵌套的集合模型来表示程序中的树文件夹。表结构为:
id | lft | rft | level

第一个字段是id,第二个字段是嵌套间隔的左侧值,第三个字段是右侧值和树中的级别(级别值从1开始)。
我正在使用MySQL和JAVA。

问题是:如何使用此模型从树中复制子树?

最佳答案

a)确保目标中有足够的空隙(您可能最终会在此处重新编号整个树)

b)对于正在移动的顶部节点:

let a = lft - lft'
    b = level' - level


其中lft'是该节点的新lft,level'是新级别

c)现在,a和b可用于为所有正在移动的节点确定新的lft,rft和级别:

let lft' = lft + a
    rft' = rft + a
    level' = level + b

10-05 18:32