说明
在之前的文章:使用左右值树形数据结构实现树形菜单 中记录了如何使用左右值增删改查节点,本次将记录一下如何移动节点,语言使用JAVA + MYSQL实现。
总体思路
移动节点的大致思路是记录移动节点和目标节点之间的左右值以及其子节点的左右值,移动节点及其子节点左右值和目标节点及其子节点的左右值相互加减。
举例
节点A的左右值是LEFT=1,RIGHT=2,节点B的左右值是LEFT=5,RIGHT=6,现在要将节点A移动到节点B前面,那么它的移动范围就是RIGHT - LEFT + 1,即:2 - 1 +1 = 2,也就是说节点A左右值+2,左右值小于节点B的左右值-2 。
结果:节点A的LEFT = 3 ,RIGHT = 4,节点B前面的节点左右值减了2变成了LEFT=1,RIGHT=2,相当于和节点A换了个位置,如此来达到移动节点的目的
后续的移动到节点B后面、移动到节点B作为其子节点思路相同。
更新
2021-6-22 更新
修复了BUG,最新代码请关注: https://github.com/reinershir/lui-auth 以下代码摘抄自菜单管理功能
more >>