国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

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

問題描述

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

問題解答

回答1:

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

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

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

回答2:

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

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 昭苏县| 济源市| 雷波县| 清丰县| 长丰县| 章丘市| 麻阳| 黑水县| 金门县| 承德县| 图片| 枣庄市| 华蓥市| 安溪县| 即墨市| 浦城县| 华宁县| 太仓市| 新宾| 兴城市| 北宁市| 长泰县| 科技| 沽源县| 达尔| 河东区| 鲁甸县| 德江县| 通许县| 青海省| 泗阳县| 松阳县| 安乡县| 青州市| 老河口市| 轮台县| 汝州市| 峨边| 名山县| 广安市| 内黄县|