V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  robbaa  ›  全部回复第 2 页 / 共 2 页
回复总数  26
1  2  
2023-02-16 21:41:38 +08:00
回复了 baptismOfTime 创建的主题 程序员 一棵关于树节点变色的问题,欢迎感兴趣的大佬们讨论
方案二:
基于方案一改良,把 left 和 right 的值换成 float 或 double ,不再递增只保证数值增加的。
新增元素,用两侧兄弟元素 right(leftNodeRight)与 left(rightNodeLeft)的值去计算新节点的 left 、right 。
left=(rightNodeLeft-leftNodeRight)/4+leftNodeRight
right=rightNodeLeft - (rightNodeLeft-leftNodeRight)/4

计算公式不一定,只要能保证有“足够空间”都可以,定时做好“空间”回收就行。
2023-02-16 21:41:23 +08:00
回复了 baptismOfTime 创建的主题 程序员 一棵关于树节点变色的问题,欢迎感兴趣的大佬们讨论
大致如下:
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 值的更新。
2023-02-16 21:41:11 +08:00
回复了 baptismOfTime 创建的主题 程序员 一棵关于树节点变色的问题,欢迎感兴趣的大佬们讨论
其实,主要是无限层级遍历问题。
分享 2 个方案,一个是看来的,另外一个算是改进,好不好不好说。

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

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