美文网首页
二叉树结构菜单 - 操作

二叉树结构菜单 - 操作

作者: 游园拾忆 | 来源:发表于2018-03-06 12:13 被阅读18次
    二叉树结构菜单
    • 添加:
    参数: 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)
    

    相关文章

      网友评论

          本文标题:二叉树结构菜单 - 操作

          本文链接:https://www.haomeiwen.com/subject/irmlfftx.html