![]() |
1
1
您遇到的问题很明显,在SQL中是递归的。你需要得到父母的父母…并更新叶的总数(要么减去旧的并添加新的,要么重新计算)。您需要某种形式的标识符来查看树的结构,并获取要更新的叶的所有子节点和父级/路径列表。 这个方法添加了常量空间(表中有2列——但您只需要一个表,否则您可以稍后进行联接)。我之前玩过一个使用“左”列和“右”列(显然不是那些名称)的层次结构格式的结构,分别由顺序前遍历和顺序后遍历计算——不用担心,这些不需要每次都重新计算。 我让你看一页 using this method in mysql 如果您不喜欢此方法作为答案,则不要继续此讨论。但如果你喜欢的话,请发表/编辑,我会花些时间澄清。 |
![]() |
2
1
我不确定我是否正确理解你的问题,但这是可行的。 My take on trees in SQL . 链接后描述的在数据库中存储树的方法——在这种情况下是postgresql——但是该方法足够清晰,因此可以很容易地用于任何数据库。 使用此方法,您可以轻松地更新所有依赖于修改后节点的节点。 K 关于 n 简单选择查询 n 是距离 K 从根节点。 我希望你的树不是很深。 祝你好运! |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |
![]() |
Bioinfotec · 如何在R中将两个嵌套列表合并为一个列表? 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 11 月前 |
![]() |
ep84 · Python中处理扩展线性序列的快速(最快)方法 12 月前 |
![]() |
Gerry · python中高效的Merge排序实现 1 年前 |
![]() |
Noel · C#通过引用返回结构导致复制 1 年前 |