簡體   English   中英

關於Java中的樹實現-問題

[英]Regarding Tree Implementation in Java - Question

我想在Java中實現泛型樹,並且我想對同一個表使用單個表,其中表的結構如下。

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代碼中實現此代碼。如果您有此示例代碼,或者可以共享代碼,請共享。

要求:從底層SQL Server數據庫訪問上表,並重建樹結構,以便設置父級和子級之間的關系。

問候迪帕克

將所有節點放入按順序創建的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和子節點列表的類。 這就是您所需要的。

用OO語言制作樹的基礎知識:

  • 您將需要某種類型的Node類來保存數據和對其的引用(父,子,兄弟姐妹等-取決於實現)

  • 與樹木打交道時,遞歸是您的朋友。

我會使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM