成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

java - 如何求多叉樹兩個任意節(jié)點的最短路徑呢?

瀏覽:200日期:2024-02-02 11:31:00

問題描述

每個節(jié)點的數(shù)據(jù)結(jié)構(gòu)是一個value ,和這個節(jié)點的所有子節(jié)點

問題解答

回答1:

設(shè)有n個節(jié)點。

樹轉(zhuǎn)無向圖,然后用n次dijkstra、spfa等單源最短路算法或1次floyd多源最短路算法求任意兩節(jié)點的值。但是當(dāng)n比較大的話儲存值對內(nèi)存的開銷較大。

使樹成為有根樹,每個節(jié)點i儲存到根的距離di。查詢兩節(jié)點di,dj時,求兩節(jié)點的公共祖先dk,則d(i,j)=di+dj-dk*2。關(guān)于公共祖先可以參考tarjan算法。

回答2:

當(dāng)成無向圖考慮Floyd算法.

標(biāo)簽: java
相關(guān)文章: