Algorithmus zurückzukehren Länge kürzesten Zweig in einem Binärbaum

stimmen
0

Ein Binärbaum kann das rechte Kind von n unter Verwendung von zwei Funktionen, l und r codiert werden, so dass für einen Knoten geben n, l (n) geben, das linke Kind von n, r (n).

Ein Ast eines Baumes ein Pfad von der Wurzel zu einem Blatt ist, wird die Länge eines Zweiges auf ein bestimmtes Blatt ist die Anzahl von Bögen auf dem Weg von der Wurzel zu diesem Blatt.

Lassen MinBranch (l, r, x) ein Binärbaum kodiert durch die L und R-Funktionen zusammen mit dem Wurzelknoten x für den Binärbaum ein einfacher rekursive Algorithmus sein, für die Aufnahme und gibt den kürzesten Zweig des binären Baums.

Bitte geben Sie den Pseudo-Code für diesen Algorithmus.

Veröffentlicht am 03/08/2009 um 04:30
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
4

Schauen Sie sich beide Zweige. Finden Sie die Länge des kürzesten Weges in jedem. In einem auf den kleineren und halten es die kürzeste Verzweigung sein.

Beantwortet am 03/08/2009 um 04:31
quelle vom benutzer

stimmen
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 )
}
Beantwortet am 03/08/2009 um 04:34
quelle vom benutzer

stimmen
5

Ich sehe , haben Sie erhalten Antworten darauf , wie das bekommen Länge des kürzesten Zweig, aber Ihre Hausaufgabe ist eigentlich die Rückkehr Zweig selbst, vermutlich als eine Liste von Knoten. So, hier ist ausführbarer Pseudo - Code (dh, Python) , um den Zweig zurückkehren, mit Nonenull bedeuten:

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
Beantwortet am 03/08/2009 um 04:48
quelle vom benutzer

stimmen
1

Sie können sie auch in O (2 finden R ) , wobei R ist das Ergebnis. Nützlich , wenn der Baum sehr unausgeglichen oder unendlich ist. Es ist <= O (N).

Sie können dies tun, mit iterativen-Vertiefung DFS.

Beantwortet am 03/08/2009 um 13:51
quelle vom benutzer

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