**前序二叉树菜单**

前序二叉树菜单
添加

参数: p_id,  p_lft,  p_rgt
 
(1) p_id > 0
  新增数据 lft = #{p_rgt},  rgt = #{p_rgt} + 1 ; 返回 id ;
  1. 所有 lft > #{p_rgt} 的数据,lft + 2 ;
  2. 所有 rgt >= #{p_rgt} and id != #{id} 的数据,rgt + 2 ;
 
(2) p_id == 0
  查询当前最大rgt:rgt
  添加数据:lft = #{rgt} + 1,  rgt = #{rgt} + 2

删除

参数:删除行的 pid, lft, rgt 
 
删除数据 lft >= #{lft} , rgt <= #{rgt} ;
1. 所有 lft > #{lft} 的数据,lft - {#{rgt} - #{lft} + 1} ,
2. 所有 rgt > #{rgt} 的数据,rgt - {#{rgt} - #{lft} + 1} ;    

同级上移

参数:当前级的 lft , rgt 
 
获取到同级上一个: where rgt = #{lft} - 1 ; 得到 pre_lft , pre_rgt ;
1. 所有 lft >= #{lft}  and rgt <= #{rgt} 的数据,获取到 id_List ;
            lft - ( #{pre_rgt} - #{pre_lft} + 1) 
            rgt - ( #{pre_rgt} - #{pre_lft} + 1)
2. 所有 lft >= #{pre_lft}  and rgt <= #{pre_rgt} 的数据,获取到 id_List ;
            lft + ( #{rgt} - #{lft} + 1) 
            rgt + ( #{rgt} - #{lft} + 1)

同级下移

参数:当前级的 lft , rgt 
 
获取到同级下一个: where lft = #{rgt} + 1 ; 得到 next_lft , next_rgt ;
1. 所有 lft >= #{lft}  and rgt <= #{rgt} 的数据,获取到 id_List ;
            lft + ( #{next_rgt} - #{next_lft} + 1) 
            rgt + ( #{next_rgt} - #{next_lft} + 1)
2. 所有 lft >= #{next_lft}  and rgt <= #{next_rgt} 的数据,获取到 id_List ;
            lft - ( #{rgt} - #{lft} + 1) 
            rgt - ( #{rgt} - #{lft} + 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值