前序遍历:
特点:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
这种方式的表结构,可以很方便的找到对应节点的所有子节点或父节点的信息。
具体实现步骤如下:
前序遍历二叉树图:
数据结构(主要字段)
主要思路
根据记录左右节点获取子孙节点或父子节点。
如:南方集团深圳分部的子孙节点为的条件为:
l_node > 2 and r_node < 15
如:中医骨科所有的父节点条件为:
l_node < 4 and r_node > 9
难点:
新增、修改、删除时业务逻辑相对复杂,需要对影响到列所有数据的左右节点做修改。
如果业务中已经存在数据,只需要新增两个节点字段 l_node ,r_node 然后根据parent_id 初始化相应的值
具体的存储过程如下:
初始化已存在数据的存储过程:
注:
1、该存储过程适用于原始数据按照parent_id 升序排列时 当前记录的父级记录一定要在前面
可以在记录中记录该情况的数据,当其它记录数据处理完成后再处理一次这些记录的数据。
2、查询集合时要过滤掉删除的记录和不存在父级的记录(可以到该存储过程中的查询语句中