如何从具有最佳性能的数据库中获取树结构数据?例如,假设您在数据库中有一个文件夹层次结构.folder-database-row具有ID,Name和ParentID列的位置.
您是否会使用特殊算法一次性获取所有数据,最大限度地减少数据库调用量并在代码中处理它?
或者你会使用多次调用数据库并直接从数据库中获取结构?
也许根据x数据库行数,层次结构深度或其他什么有不同的答案?
编辑:我使用Microsoft SQL Server,但其他观点的答案也很有趣.
我在MongoDB中有一个带有树结构的文档列表,其中使用了带有父引用模型的模型树结构.我想要一个聚合查询,它返回祖先列表(直到根),给定'name'属性.
结构体:
{
'_id': '1',
'name': 'A',
'parent': '',
},
{
'_id': '2',
'name': 'B',
'parent': 'A',
},
{
'_id': '3',
'name': 'C',
'parent': 'B',
},
{
'_id': '4',
'name': 'D',
'parent': 'C',
}
Run Code Online (Sandbox Code Playgroud)
聚合结果:(给定,名称='D')
{
'_id': '4',
'name': 'D',
'ancestors': [{name:'C'}, {name:'B'}, {name:'A'}]
}
Run Code Online (Sandbox Code Playgroud)
Note:我现在无法更改文档结构.这会造成很多问题.我看到许多解决方案建议将模型树结构与祖先数组一起使用.但我现在不能用它.有没有办法用上面的模式使用单个聚合查询来实现它?谢谢
我已经使用scikit-learn训练了一个随机的森林模型,现在我想将它的树结构保存在文本文件中,以便我可以在其他地方使用它.根据这个链接,树对象由许多并行数组组成,每个数组都包含有关树的不同节点的一些信息(例如,左子,右子,它检查的特征,......).但是,似乎没有关于每个叶节点对应的类标签的信息!在上面的链接中提供的示例中甚至没有提到它.
有谁知道scikit-learn决策树结构中存储的类标签在哪里?
是否有正则表达式等价的搜索和修改树结构?我正在寻找简洁的迷你语言(如perl regex).
这是一个可以澄清我在寻找什么的例子.
<root>
<node name="1">
subtrees ....
</node>
<node name="2">
<node name="2.1">
data
</node>
other subtrees...
</node>
</root>
Run Code Online (Sandbox Code Playgroud)
在上面的树上可能的操作是"将节点2.1处的子树移动到节点1处的子树中".操作的结果可能看起来像..
<root>
<node name="1">
subtrees ....
<node name="2.1">
data
</node>
</node>
<node name="2">
other subtrees...
</node>
</root>
Run Code Online (Sandbox Code Playgroud)
搜索和替换操作,例如查找具有至少2个子节点的所有节点,查找数据以"a"开头的所有节点,如果子树至少有2个其他兄弟节点等,则将其替换为"b",等等.
对于字符串,其中唯一的维度是跨越字符串的长度,我们可以使用正则表达式执行上述操作中的许多操作(或其1D等价物).我想知道是否有树的等价物.(而不是单个正则表达式,您可能需要编写一组转换规则,但这没关系).
我想知道是否有一些简单的迷你语言(不是正则表达式,而是通过库等可以访问正则表达式等).执行这些操作?优选地,作为python库.
我想知道你是否有人创建了一个在给定路径中创建文件夹的功能.
例如:NewFolder = ['/ projects/Resources/backup_Folder']
我正在使用带有底层TreeStore的NestedList.现在我想将项目添加到NestedList中作为叶子.我怎样才能做到这一点?
目前我的代码(Controller,onAddButtonTapped)如下所示:
var store = Ext.getStore('menuStore');
var customerAreaNode = store.getRoot().getChildAt(1);
customerAreaNode.appendChild({name: "text", leaf:true});
customerAreaNode.expand();
store.sync();
Run Code Online (Sandbox Code Playgroud)
此代码在叶级别(在正确的节点后面)和节点级别上的一个新的侦听中产生两个新的空侦听.每个新条目都没有在NestedList中显示的名称,但每个项目的名称字段中都包含"text".奇怪的是,叶级别的一个新条目没有输入到底层模型.因此无法找到模型对应的方法:
Uncaught TypeError: Cannot call method 'getSelectedName' of undefined
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何将数据添加到NestedList/TreeStore的简单教程?我在sencha touch docs中找不到一个好的例子.
我想要可视化HTML网站的文档结构.
我想拥有的是这样的:

是否有任何已知的工具可以执行此操作并将结果保存为位图文件?
我必须解析以下文本文件中给出的一组目录:
# Note: The root folder's parent is labelled as "?"
# Assume all directory has different name
#
A,?
B,A
C,A
D,C
E,C
F,C
G,F
Run Code Online (Sandbox Code Playgroud)
上面的文件用这种方式描述了目录结构:
A
|
+ B
|
+ C
| |
| + D
| |
| + E
| |
| + F
| | |
| | + G
Run Code Online (Sandbox Code Playgroud)
假设开头的行#是注释,我现在有以下代码:
String line;
BufferedReader f = new BufferedReader(new FileReader(new File("directory.txt")));
while ((line = f.readLine()) != null)
{
if (!line.substring(0, 1).equals("#"))
{
String …Run Code Online (Sandbox Code Playgroud) 我尝试setFilter在我的 Tabulator 树结构上调用函数,以过滤掉项目。它似乎只过滤掉顶级父母。知道如何使这项工作适用于任何级别(任何孩子或父母)吗?http://tabulator.info/docs/4.1/tree并没有过多说明过滤的工作原理。
功能
table.setFilter('id', '=', 214659) 没有返回任何东西......
树状结构
[
{
"level":0,
"name":"word1",
"id":125582,
"_children":[
{
"level":1,
"name":"word6",
"id":214659
},
{
"level":1,
"name":"word7",
"id":214633
},
{
"level":1,
"name":"word2",
"id":214263,
"_children":[
{
"level":2,
"name":"word8",
"id":131673
},
{
"level":2,
"name":"word9",
"id":125579
},
{
"level":2,
"name":"word10",
"id":125578
},
{
"level":2,
"name":"word4",
"id":172670,
"_children":[
{
"level":3,
"name":"word13",
"id":172669
},
{
"level":3,
"name":"word14",
"id":174777
},
{
"level":3,
"name":"word5",
"id":207661,
"_children":[
{
"level":4,
"name":"word15",
"id":216529
},
{
"level":4,
"name":"word16",
"id":223884,
"_children":[
{ …Run Code Online (Sandbox Code Playgroud) tree-structure ×10
python ×3
java ×2
sql-server ×2
c ×1
dom ×1
filereader ×1
mongodb ×1
nested-lists ×1
regex ×1
scikit-learn ×1
sql ×1
tabulator ×1