Java 绘制树状图-如何组织存储阵列?

Java 绘制树状图-如何组织存储阵列?,java,graph,tree,pseudocode,graph-algorithm,Java,Graph,Tree,Pseudocode,Graph Algorithm,这个问题通常与语言无关,尽管如果这很重要的话,我使用的是Java/Processing。我需要使用一些数据库输出绘制一个树状图。规则很简单: 图只有一个根。 每个节点可以有几个子节点,但只有一个父节点 我很难理解如何为绘图函数提供数据。我从Rails/MySQL获取数据的数据库具有以下结构,我使用伪代码来避免不必要的自引用:通过详细信息: Graph has_many :nodes Node has_many :siblings has_one :parent has_many :ch

这个问题通常与语言无关,尽管如果这很重要的话,我使用的是Java/Processing。我需要使用一些数据库输出绘制一个树状图。规则很简单:

图只有一个根。 每个节点可以有几个子节点,但只有一个父节点

我很难理解如何为绘图函数提供数据。我从Rails/MySQL获取数据的数据库具有以下结构,我使用伪代码来避免不必要的自引用:通过详细信息:

Graph
 has_many :nodes

Node
 has_many :siblings
 has_one :parent
 has_many :children
问题是-我应该如何组织我将节点信息放入其中的数组,以及如何在该数组中循环?一个算法的伪代码将是惊人的

如果您发现答案中缺少一些信息,请告诉我,我很乐意展开问题/添加数据

另外,我并不是真的在寻找一些可以为我绘制图表的框架/服务的建议,我实际上需要使用我当前的工具来完成这项工作

谢谢

编辑:

这就是我现在绘制图表的方式。。。它从像['0root','2child',2child2','4child_child']这样的数组中一个接一个地提取单词,并重建树,假设数组的下一个元素的int前缀大于2,则为子元素,如果小于2,则为父元素的上一级同级同级。相对于同级的位置是根据数组中具有相同前缀的元素总数计算的。。我想知道是否有更优雅的方式来做到这一点

图表{ wordList=新的ArrayList; nodeList=newarraylist; sibList=新阵列列表; }


您必须使用数组吗?这个问题的自然解决方案是实现一个“Node”类,该类引用子节点。这有助于使用递归算法,例如,该算法将允许您查找特定节点。 然后,您只需要开始引用根节点

public class Node {
  private Node parent;
  private List<Node> children;

  public Node findNode(String nodeName) {
    // Is it this node?
    // Iterate through all child nodes, calling findNode on each
  }
}

与其使用数组,为什么不能有一个名为Node的类来满足这个目的呢?我必须将数据从Rails模型传递到实际的graph_draw函数,这个函数是用Java/Processing编写的,所以我必须以某种方式通知graph_draw它正在接收什么类型的节点?它有子节点吗?它有兄弟姐妹吗?。。我想我在计算哪些参数应该与实际的Node.content一起传递时遇到了困难。graph\u draw需要哪些参数?这是您正在使用的第三方库吗?有API的文档吗?graph_draw只是我正在处理的一个函数,它可以接受任何参数。。我将用有关该功能的更多信息更新问题:
public class Node {
  private Node parent;
  private List<Node> children;

  public Node findNode(String nodeName) {
    // Is it this node?
    // Iterate through all child nodes, calling findNode on each
  }
}