V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  robbaa  ›  全部回复第 3 页 / 共 3 页
回复总数  45
1  2  3  
大致如下:
root: 0,25
node2_1:1,18
node3_1:2,3
node3_2:4,15
node4_1:5,8
node5_1:6,7
ndoe4_2:9,14
node5_2:10,11
node5_3:12,13
node3_3:16,17
node2_2:19,22
node3_4:20,21
node2_3:23,24

需求 1:查询某节点下所有节点
select * from nodes where left > {left} and right < {right}

需求 2:查询某元素上级节点
select * from nodes where left < {left} and right > {right} order by left ASC

缺陷代价:
元素的添加与删除,都会导致大量 left 、right 值的更新。
其实,主要是无限层级遍历问题。
分享 2 个方案,一个是看来的,另外一个算是改进,好不好不好说。

方案一:
每个节点 4 个属性:
id:编号
name:名称
parent:父节点编号
left:左子节点排序编号
right:右边子节点排序编号

1. 先构建树
2. 然后按照,先序遍历对每个节点的 left 、right 设值,每次加 1.
感觉路子有点窄,祝您成功
2023 年 2 月 14 日
回复了 my1103 创建的主题 程序员 看不到希望咋办
尝试整点副业,当你不太看重现有工作工资时就不慌了
2023 年 2 月 11 日
回复了 EchoGroot 创建的主题 NAS 大佬们,推荐下 NAS 系统呗
每人用途不一样:ubuntu server + openzfs + samba + frp + kvm
1  2  3  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1105 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 18:32 · PVG 02:32 · LAX 10:32 · JFK 13:32
♥ Do have faith in what you're doing.