我有一個(gè)用 jgrapht 庫(kù)表示的樹,有多種類型的節(jié)點(diǎn),我需要從特定的節(jié)點(diǎn)類型開始切割任何子樹。正如您在此示例中所看到的,該樹代表 Java 類的源代碼。我需要通過(guò)拆分從每個(gè)“Entry”節(jié)點(diǎn)類型開始的主樹來(lái)創(chuàng)建多個(gè) jgrapht 對(duì)象??偣参覒?yīng)該從這棵大樹中得到 7 棵樹。我使用的結(jié)構(gòu)是DirectedPseudograph.
1 回答

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
雖然我不是 100% 清楚你想要什么,但似乎有多種解決方法。
從根節(jié)點(diǎn)的每個(gè)傳出鄰居開始,您可以運(yùn)行深度優(yōu)先搜索并記錄返回的節(jié)點(diǎn)。DFS算法可達(dá)的節(jié)點(diǎn)屬于同一子樹。為此,您可以使用DepthFirstIterator
您可以創(chuàng)建沒(méi)有根節(jié)點(diǎn)的子圖,例如使用AsSubgraph類。然后,您可以在生成的導(dǎo)出子圖上調(diào)用ConnectivityInspector 。由于每個(gè)子樹都是一個(gè)斷開連接的圖形組件,因此連接檢查器將能夠找到每個(gè)組件。
順便說(shuō)一句,除非您需要偽圖的功能,否則為了性能,最好使用 SimpleDirectedGraph。顯然,后者不允許平行邊或自環(huán)。
添加回答
舉報(bào)
0/150
提交
取消