我正在遵循此处表示的嵌套集模型: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示例,我不确定如何有效地了解每个节点及其边缘。

任何建议将不胜感激。谢谢!

最佳答案

这取决于您所说的“可视化”。

在您选择的任何编程语言中,有向图都可以表示为一组节点对,每个节点对代表父级和子级。没有父节点的节点是源,而没有子节点的节点是宿。有数十种众所周知且广泛发布的算法,用于遍历一棵树的割据并评估所有可能的遍历,电路等。

10-07 22:06