您的位置:首頁技術文章
文章詳情頁

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

瀏覽:158日期: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
相關文章:
国产综合久久一区二区三区