Algoritmus visszatér hossza legrövidebb ágon egy bináris fa

szavazat
0

A bináris fa lehet kódolva két funkció l és r olyan, hogy egy csomópont n, l (n), így a bal gyermek n, r (n), így a jobb fia n.

Egy ág egy fa egy útvonal a gyökér a levél, a hossza egy ágat, hogy egy adott levél a ívek száma az utat a gyökértől, hogy levél.

Hagyja MinBranch (l, r, x) egy egyszerű rekurzív algoritmus vesz egy bináris fa által kódolt l és r funkciók együtt a gyökér csomópont x bináris fa, és visszaadja a legrövidebb ágon a bináris fa.

Kérjük, adja meg pszeudokódokra erre algoritmus.

A kérdést 03/08/2009 04:30
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
4

Nézd meg mindkét ágban. Keresse meg a hossza a legrövidebb út az egyes. Adjunk hozzá egy a kisebb és úgy vélik, hogy a legrövidebb ágon.

Válaszolt 03/08/2009 04:31
a forrás felhasználó

szavazat
0
function recurseMin(n)
{
if r(n) is null and l(n) is null, return 1
if r(n) is not null, rightSum = recurseMin( r(n-1) )
if l(n) is not null, leftSum = recurseMin ( l(n-1) )
return 1 + min( leftSum, rightSum )
}
Válaszolt 03/08/2009 04:34
a forrás felhasználó

szavazat
5

Látom kaptál választ, hogyan lehet a hossza a legrövidebb ág, de a házi feladatot tulajdonképpen visszatér a fióktelep is, feltételezhetően a csomópontok listáját. Szóval, itt van végrehajtható pszeudokódokra (azaz, Python), hogy valóban visszatér az ág felhasználásával Nonejelenti null:

def MinBranch(l, r, x):
  if x is None: return []
  left_one = MinBranch(l, r, l(x))
  right_one = MinBranch(l, r, r(x))
  if len(left_one) < len(right_one):
    tail = left_one
  else:
    tail = right_one
  return [x] + tail
Válaszolt 03/08/2009 04:48
a forrás felhasználó

szavazat
1

Azt is megtalálja azt a O (2 R ), ahol R az eredmény. Hasznos, ha a fa nagyon kiegyensúlyozatlan vagy végtelen. Ez <= O (N).

Ezt megteheti iteratív mélyülő DFS.

Válaszolt 03/08/2009 13:51
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more