关于Java中的树实现 - 问题

时间:2010-11-17 17:50:55

标签: java tree

我想在java中实现一个Generic Tree,我想在同一个表中使用一个表。表的结构如下所示。

public class MyTreeNode {    
  private int id;    
  private int parentId;    
  private MyTreeNode parent;   
  private List<MyTreeNode> childNodes;   
  // further fields..  
}
NAME OF TABLE IS **TREE_TABLE**  
PK_ID       | PARENT  
----------  |----------  
1           | null  
2           | 1  
3           | 1  
4           | 2

意思是,具有PK_ID 2和3的节点将节点1作为父节点,4具有2作为父节点,1节点没有父节点(空)。

如何在Java代码中实现此功能。如果您有此代码,或者如果您可以共享代码,请使用任何示例代码,请分享它。

要求:从underlyng SQL Server数据库访问上表并重建树结构,以便设置Parent和Child之间的关系。

此致 迪帕克

3 个答案:

答案 0 :(得分:2)

将所有节点放入按顺序创建的arrayList中。该算法假定按PK_ID的顺序获取表行。

nodes = emptyArrayList

for each row in your table:
   node n = new Node(PK_ID)
   nodes.add(n)
   if (PARENT != null)
       nodes.get(PARENT).addChild(n)

之后,nodes [0]是树的根。我不打算向您展示如何创建树数据结构。

编辑:关于树

至于你的树,每个节点应该只知道它下面的节点,而不是上面的节点。因此不需要您的父ID和父节点字段。否则,它看起来不错。

编辑:有关树形结构的更多信息:

正如我所说,你的树形结构很好。它可以只是一个具有id和子节点列表的类。这就是你所需要的一切。

答案 1 :(得分:1)

使用OO语言编写树的基础知识:

  • 您需要某种类型的Node类 保存数据和引用 (父母,孩子,兄弟姐妹等 - 取决于实施情况)

  • 处理树时,递归就是 你的朋友。

答案 2 :(得分:0)

我会使用HashMap

HashMap<Integer, Integer> table = new HashMap<Integer, Integer>();

table.put(1, null);
table.put(2, 1);
table.put(3, 1);
table.put(4, 2);