我正在使用嵌套的集合模型来表示程序中的树文件夹。表结构为: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