文章詳情頁
java - 如何求多叉樹兩個任意節點的最短路徑呢?
瀏覽:157日期: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. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?2. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處3. mysql 查詢身份證號字段值有效的數據4. 視頻文件不能播放,怎么辦?5. flask - python web中如何共享登錄狀態?6. 請教使用PDO連接MSSQL數據庫插入是亂碼問題?7. python - 數據與循環次數對應不上8. 黑客 - Python模塊安全權限9. mysql - 把一個表中的數據count更新到另一個表里?10. node.js - nodejs開發中常用的連接mysql的庫
排行榜
