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

本文介绍了如何利用前序遍历的方法处理MySQL中的无限层级数据结构,详细阐述了数据结构、主要思路以及新增、删除、编辑元素的存储过程。通过设置l_node和r_node字段,可以方便地获取子孙或父节点。文章强调了在进行新增、修改、删除操作时对左右节点调整的复杂性,并提供了相关存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前序遍历:

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

 

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

具体实现步骤如下:

前序遍历二叉树图:

数据结构(主要字段)

主要思路

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

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

l_node > 2  and  r_node < 15

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

l_node < 4  and  r_node > 9

 

难点:

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

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

具体的存储过程如下:

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

注:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值