我正在遵循此处表示的嵌套集模型:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
我有分层数据,有效地是一堆带有边/节点的不同图形,并且希望将其可视化。我了解嵌套集的概念,但不确定在不运行过多查询(性能)的情况下如何知道每个节点的父/子关系。
我正在尝试使用来自visjs的http://visjs.org/examples/network/basicUsage.html之类的图形。
但是visjs希望采用以下格式的数据集:
<script type="text/javascript">
// create an array with nodes
var nodes = new vis.DataSet([
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
]);
// create an array with edges
var edges = new vis.DataSet([
{from: 1, to: 3},
{from: 1, to: 2},
{from: 2, to: 4},
{from: 2, to: 5}
]);
// create a network
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {};
var network = new vis.Network(container, data, options);
</script>
有没有一种方法可以运行单个查询或有效函数,该函数将返回数据,因此我知道:
节点1(lft 1,rgt 8)具有子节点2(2,3)和节点3(4,7)
节点3有子节点4(5,6)
Node 1
/\
Node 2 Node 3
|
Node 4
我可以得到整棵树,也可以做缩进的东西,
基于visjs示例,我不确定如何有效地了解每个节点及其边缘。
任何建议将不胜感激。谢谢!
最佳答案
这取决于您所说的“可视化”。
在您选择的任何编程语言中,有向图都可以表示为一组节点对,每个节点对代表父级和子级。没有父节点的节点是源,而没有子节点的节点是宿。有数十种众所周知且广泛发布的算法,用于遍历一棵树的割据并评估所有可能的遍历,电路等。