java - 如何求多叉树两个任意节点的最短路径呢?
ringa_lee
ringa_lee 2017-04-18 10:48:59
0
2
600

每个节点的数据结构是一个value ,和这个节点的所有子节点

ringa_lee
ringa_lee

ringa_lee

membalas semua(2)
Ty80

Terdapat n nod.

  1. Tukar pepohon kepada graf tidak terarah, dan kemudian gunakan algoritma laluan terpendek sumber tunggal n-masa seperti dijkstra dan spfa atau algoritma laluan terpendek berbilang sumber floyd 1 kali untuk mencari nilai mana-mana dua nod. Tetapi apabila n agak besar, overhed memori untuk menyimpan nilai adalah besar.

  2. Jadikan pokok sebagai pokok berakar, dan setiap nod i menyimpan jarak di ke akar. Apabila menanyakan dua nod di,dj, cari dk moyang sepunya bagi kedua-dua nod itu, kemudian d(i,j)=di+dj-dk*2. Untuk maklumat tentang nenek moyang yang sama, sila rujuk algoritma Tarjan.

小葫芦

Pertimbangkan algoritma Floyd sebagai graf tidak terarah.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!