文章詳情頁
java - 如何求多叉樹兩個任意節點的最短路徑呢?
瀏覽:269日期:2024-02-02 11:31:00
問題描述
每個節點的數據結構是一個value ,和這個節點的所有子節點
問題解答
回答1:設有n個節點。
樹轉無向圖,然后用n次dijkstra、spfa等單源最短路算法或1次floyd多源最短路算法求任意兩節點的值。但是當n比較大的話儲存值對內存的開銷較大。
使樹成為有根樹,每個節點i儲存到根的距離di。查詢兩節點di,dj時,求兩節點的公共祖先dk,則d(i,j)=di+dj-dk*2。關于公共祖先可以參考tarjan算法。
回答2:當成無向圖考慮Floyd算法.
標簽:
java
相關文章:
1. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””2. docker - 如何修改運行中容器的配置3. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題4. docker鏡像push報錯5. 前端 - @media query 使用出現的問題?6. 利用IPMI遠程安裝centos報錯!7. 運行python程序時出現“應用程序發生異常”的內存錯誤?8. docker 下面創建的IMAGE 他們的 ID 一樣?這個是怎么回事????9. phpstudy8.1沒集成mysql-front10. html - css氣泡,實現“倒三角(不知道算不算三角了)”可透明的。
排行榜

網公網安備