2009-09-22 59 views
2

我正在尋找Java的純樹數據結構(不是java.awt中的圖形數據結構)的任何實現,最好是泛型的。Java中樹的現有實現?

隨着通用樹我想補充一點,不應該進行排序元素做這樣的事情:

TreeNode anotherNode = new TreeNode(); 
node.add(anotherNode); 

...然後我想遍歷節點(所以當我再次從同一文件加載樹時,我可以保存並保存文件中的結構)。

任何人都知道有什麼實現存在或有任何其他想法來實現這一目標?

+0

我錯過了什麼?你在尋找'java.util.TreeSet'還是'java.util.TreeMap'?請定義*樹*。 – Dirk 2009-09-22 09:57:45

+0

大約一年前,我需要一個樹的實現,但找不到合適的,所以我不得不推出我自己的:/ – Joril 2009-09-22 10:06:55

回答

3

您可以使用javax.swing.tree軟件包中定義的DefaultMutableTreeNode。它包含方法getUserObject()setUserObject(Object),允許您將數據附加到每個樹節點。它允許爲每個父節點創建任意數量的子節點,並提供以寬度優先或深度優先的方式遍歷樹的方法(breadthFirstEnumeration()/depthFirstEnumeration())。

另請注意,儘管常駐於javax.swing.tree包中,但此類不包含任何UI代碼;它僅僅是JTree的基本模型。

0

首先,運行時的TreeSetTreeMap是紅黑樹實現。

+1

是的,他們在內部使用樹,但它們本身不是樹 – 2009-09-22 10:00:50

+1

另外,它們在內部使用一個二叉樹實現,因此不會提供OP請求的「通用樹」功能。 – Adamski 2009-09-22 10:14:55

2

斯卡拉有一個不錯的Tree數據結構。這是一個「一般平衡樹」。這不完全是Java,但它很接近,可以作爲一個很好的模型。

很難相信,考慮到基礎Java庫有多少,但沒有很好的通用結構。

0

假設您不想在節點上存儲任意的Java對象,可以使用W3C DOM。它甚至帶有自己的序列化格式(我忘記了它叫做:-)。