文章詳情頁
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
上一條:java - 一個(gè)類的對(duì)象鎖只有一個(gè),類鎖呢?下一條:java - c++學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)應(yīng)不應(yīng)該用stl實(shí)現(xiàn)?
相關(guān)文章:
1. 致命錯(cuò)誤: Class ’appfacadeTest’ not found2. html5 - 如何實(shí)現(xiàn)帶陰影的不規(guī)則容器?3. objective-c - iOS開發(fā)支付寶和微信支付完成為什么跳轉(zhuǎn)到了之前開發(fā)的一個(gè)app?4. css - 移動(dòng)端字體設(shè)置問題5. python - 管道符和ssh傳文件6. javascript - 循環(huán)嵌套多個(gè)promise應(yīng)該如何實(shí)現(xiàn)?7. mysql優(yōu)化 - 關(guān)于mysql分區(qū)8. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒有反應(yīng)9. 前端 - IE9 css兼容問題10. javascript - ionic2 input autofocus 電腦成功,iOS手機(jī)鍵盤不彈出
排行榜

熱門標(biāo)簽