Die Mathe-Redaktion - 22.10.2019 16:20 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 772 Gäste und 19 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Algorithmen / Datenstrukturen » Pseudo-Code Algorithmus Binärer Suchbaum
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Pseudo-Code Algorithmus Binärer Suchbaum
Mitness
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2019
Mitteilungen: 14
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-01-12


Moin!

Ich brauche einen rekursiven Algorithmus im form eines Pseudo-codes, der in einem Binären Suchbaum jedem Knoten ein Label h(v) gibt, welches die Höhe des Knotens im Baum beschreibt, wenn angenommen wird, dass h(nil) = 0 global definiert ist.  


Ich habe schon dutzende male bei Google danach gesucht, aber kann nichts dazu finden mad , vielleicht könnt ihr mir ja weiterhelfen  smile !



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5174
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-01-12


Hallo Mitness,

für einen Knoten v, der kein Blatt ist, seien k1(v) und k2(v) die beiden Kindknoten.

Du kannst die Funktion rekursiv definieren:
Funktion H(v,n) (input: Knoten v und Wert n)
  setze h(v) = n
  wenn v ein Blatt ist: return
  rufe H(k1(v),n+1) und H(k2(v),n+1) auf
  return

Rufe dann H(w,0) auf, wobei w die Wurzel des binären Baums ist.



  Profil  Quote  Link auf diesen Beitrag Link
Mitness
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2019
Mitteilungen: 14
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2019-01-12


2019-01-12 18:44 - StrgAltEntf in Beitrag No. 1 schreibt:
Hallo Mitness,

für einen Knoten v, der kein Blatt ist, seien k1(v) und k2(v) die beiden Kindknoten.

Du kannst die Funktion rekursiv definieren:
Funktion H(v,n) (input: Knoten v und Wert n)
  setze h(v) = n
  wenn v ein Blatt ist: return
  rufe H(k1(v),n+1) und H(k2(v),n+1) auf
  return

Rufe dann H(nil,0) auf.

Ich danke dir :)!



  Profil  Quote  Link auf diesen Beitrag Link
Mitness
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2019
Mitteilungen: 14
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2019-01-12


2019-01-12 18:44 - StrgAltEntf in Beitrag No. 1 schreibt:
Hallo Mitness,

für einen Knoten v, der kein Blatt ist, seien k1(v) und k2(v) die beiden Kindknoten.

Du kannst die Funktion rekursiv definieren:
Funktion H(v,n) (input: Knoten v und Wert n)
  setze h(v) = n
  wenn v ein Blatt ist: return
  rufe H(k1(v),n+1) und H(k2(v),n+1) auf
  return

Rufe dann H(w,0) auf, wobei w die Wurzel des binären Baums ist.

Also ich verstehe was der Pseudocode macht, soweit so gut, nur ist es gefordert den Pseudocode in dieser Konvention zu schreiben:
example

kannst du mir deinen Pseudocode auf diese art einmal schreiben? Damit ich weiß wie ich sowas in Zukunft abstrahiere smile

PS: Diese Aufgabe ist lediglich eine Übungsaufgabe und wird nicht bewertet!



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5174
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2019-01-12


Eigentlich musst du es nur ins Englische übersetzen wink
function H(v,n)
  h[v] <- n
 
  if left[v] != NIL then
    H(left[v],n+1)
  end if
 
  if right[v] != NIL then
    H(right[v],n+1)
  end if
 
  return
end function



  Profil  Quote  Link auf diesen Beitrag Link
Mitness
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2019
Mitteilungen: 14
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2019-01-12


2019-01-12 19:38 - StrgAltEntf in Beitrag No. 4 schreibt:
Eigentlich musst du es nur ins Englische übersetzen wink
function H(v,n)
  h[v] <- n
 
  if left[v] != NIL then
    H(left[v],n+1)
  end if
 
  if right[v] != NIL then
    H(right[v],n+1)
  end if
 
  return
end function

Ich danke dir vielmals biggrin
Jetzt habe ich ein Beispiel wie ich die nächsten Übungen angehe  smile




  Profil  Quote  Link auf diesen Beitrag Link
Mitness
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.01.2019
Mitteilungen: 14
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2019-01-12


2019-01-12 19:38 - StrgAltEntf in Beitrag No. 4 schreibt:
Eigentlich musst du es nur ins Englische übersetzen wink
function H(v,n)
  h[v] <- n
 
  if left[v] != NIL then
    H(left[v],n+1)
  end if
 
  if right[v] != NIL then
    H(right[v],n+1)
  end if
 
  return
end function


Weißt du denn auch, wie ich zeigen kann, dass die Lauftzeit von O(n) eingehalten wird mit diesem Pseudocode? smile



  Profil  Quote  Link auf diesen Beitrag Link
matph
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 20.11.2006
Mitteilungen: 5506
Aus: A
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2019-01-12


Hallo,

Du könntest das Akra-Bazzi-Theorem verwenden smile

--
mfg
matph


-----------------
Wir müssen wissen, wir werden wissen. Hilbert
Das Buch der Natur ist in der Sprache der Mathematik geschrieben. Galilei



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 5174
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2019-01-12


2019-01-12 20:12 - Mitness in Beitrag No. 6 schreibt:
Weißt du denn auch, wie ich zeigen kann, dass die Lauftzeit von O(n) eingehalten wird mit diesem Pseudocode? smile

Mache dir klar, dass die Funktion H für jeden Knoten genau ein Mal aufgerufen wird. Damit bist du eigentlich fertig.

(Übrigens solltest du, wenn n die Anzahl der Knoten bezeichnet, die Variable n im Pseudocode durch k ersetzen.)

[Die Antwort wurde nach Beitrag No.6 begonnen.]



  Profil  Quote  Link auf diesen Beitrag Link
Mitness hat die Antworten auf ihre/seine Frage gesehen.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]