Mysql 采用树前序算法优化无限层级结构

前序遍历: 特点:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。这种方式的表结构,可以很方便的找到对应节点的所有子节点或父节点的信息。具体实现步骤如下:前序遍历二叉树图:数据结构(主要字段)主要思路根据记录左右节点获取子孙节点或父子节点。如:南方集团深圳分部的子孙节点为的...
摘要由CSDN通过智能技术生成

前序遍历:

   特点:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。

 

这种方式的表结构,可以很方便的找到对应节点的所有子节点或父节点的信息。

具体实现步骤如下:

前序遍历二叉树图:

数据结构(主要字段)

主要思路

根据记录左右节点获取子孙节点或父子节点。

如:南方集团深圳分部的子孙节点为的条件为:

l_node > 2  and  r_node < 15

如:中医骨科所有的父节点条件为:

l_node < 4  and  r_node > 9

 

难点:

 新增、修改、删除时业务逻辑相对复杂,需要对影响到列所有数据的左右节点做修改。

如果业务中已经存在数据,只需要新增两个节点字段 l_node ,r_node 然后根据parent_id 初始化相应的值

具体的存储过程如下:

初始化已存在数据的存储过程:

注:

      1、该存储过程适用于原始数据按照parent_id 升序排列时 当前记录的父级记录一定要在前面

            可以在记录中记录该情况的数据,当其它记录数据处理完成后再处理一次这些记录的数据。

      2、查询集合时要过滤掉删除的记录和不存在父级的记录(可以到该存储过程中的查询语句中

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值