Binären Suchbaum

Ein binärer Suchbaum, in der digitalen Umgebung ist ein binärer Baum, bei denen die Werte der Kinder eines Knotens sind geordnet, in der Regel Werte kleiner sind als diejenigen der Ausgangsknoten in dem Kinder links und größere Werte bei Kindern rechts.

Der Anstieg ist auf mehr Menschen auf den späten fünfziger Jahren.

Formale Definition

Die formale Definition eines ABR ist die eines Binärbaum die folgenden drei Eigenschaften, die wir als den Wert eines Knotens anzeigen:

  •  wo ist eine Halbordnung
  •  wobei der linke Teilbaum des Knotens
  •  wo das rechte Teilbaum des Knotens

Durchführung

In der Regel ist die Umsetzung dell'ABR gleich der von einem binären Baum, ebenso wie die Operationen dann die Eigenschaften Welle verhängen.

Zum Beispiel in der Sprache Pascal Implementierung eines ABR mit einfachen ganzen Zahlen ist gleich derjenigen eines binären Baums, die einfache Ganzzahlen:

Geschäftstätigkeit

Für allgemeine Aufgaben auf einem ABR, die Elemente, die Nutzung seiner Eigenschaften, wurden sie mit komplexen Algorithmen, um mit gleicher Tiefe dell'ABR gleichen, außer für den Besuch aller Knoten gefunden.

Wobei der ABR ein binärer Baum, im günstigsten Fall wird dann, wenn die Anzahl von Knoten in dem Baum.

Besuchen Sie bestellt

Ein erster Schritt ist ein Besuch in seiner Gesamtheit in einer geordneten Art und Weise, von der kleinsten oder größten Element.

Algorithmus

Der Besuch wird mit einem rekursiven Algorithmus, der die Eigenschaften dell'ABR, in geordneter Weise vor dem Besuch des linken Unterbaum nutzt durchgeführt, dann besuchen Sie den Stammknoten und dann in geordneter Weise auf dem richtigen Unterbaum.

Da alle Knoten nur einmal besucht, ist die algorithmische Komplexität gleich.

Implementierungen

Ein Implementierungsbeispiel in der Pascal-Sprache ist wie folgt:

Suchen nach einem Element

Die Suche nach den Knoten, der einen bestimmten Wert enthält, ist einer der am häufigsten einer ABR.

Algorithmus

Die Lösung ist auch rekursive Algorithmus in diesem Fall und die Nutzung der Eigenschaften dell'ABR. Die Forschung erfolgt, indem der Wert des Wurzel dell'ABR mit dem, was zu finden, durchgeführt, und wenn Sie sich nicht immer der Wert gesucht, forscht auf dem Teilbaum links oder rechts, je nachdem, ob die Wurzel dell'ABR einen Wert größer oder kleiner als versuchte.

Der Algorithmus bei jeder Stufe rekursiv steigt eine Ebene des Baums ist, dann ist es offensichtlich, dass ihre algorithmische Komplexität ist, wobei die Tiefe des Baumes.

Implementierungen

Eine Implementierung des Algorithmus in der Sprache Pascal sieht folgendermaßen aus:

Einfügen eines Elements

Die Einbeziehung von einem Element in einem ABR muss so erfolgen, dass die resultierende Struktur nach dem Einsetzen muss immer die Eigenschaften des ABR respektieren.

Algorithmus

Der Algorithmus ist ähnlich dem der Suche. In der Praxis führt es eine Suche, solange es kein Entrinnen aus dem Baum, und der letzte Knoten vor der Abreise wird der Vater des neuen Elements eingefügt werden durchlaufen. An dieser Stelle vergleichen wir den Wert der Vater mit derjenigen aufgenommen werden und richtig auf der linken oder rechten Seite des Vaters der neue Wert.

Der Algorithmus dann den gleichen algorithmischen Komplexität der Suche, und dann mit der Tiefe des Baumes.

Implementierungen

Ein Implementierungsbeispiel in Pascal-Sprache ist wie folgt:

Einen Artikel löschen

Ein Element in einem ABR Löschen ist nicht so eine einfache Bedienung. Um seine dell'ABR auch nach dem Löschen bewahren, müssen wir den Fall, in dem die zu löschenden Knoten ist ein Blatt ohne Kinder, hat einen Sohn und hat zwei Kinder zu unterscheiden.

Algorithmus

Der Algorithmus zum Löschen daher zum einen unterscheidet die folgenden drei Fälle:

  • Wenn der Knoten ist ein Blatt ohne Kinder, löschen Sie sie einfach aus dem Baum.
  • Wenn der Knoten, anstatt nur ein Kind hat, wird sie entfernt und in der Struktur des Baumes mit seinen einzigen Sohn ersetzt.
  • Wenn der Knoten hat zwei Kinder statt findet er sein Nachfolger, und Sie können die Werte der zu löschenden Knoten tauschen und der Nachfolger gefunden und löschen Sie nur die letztere.

Der Algorithmus hat einen einzigen Fall, dass mehr profane Aufgaben tut, und bei der Suche nach den Nachfolger eines Knotens.

Diese letzte Operation gemacht wird oder auf der Suche am wenigsten von der rechten Teilbaum des Knotens, Betrieb bis die Knoten auf der linken Seite durchgeführt, bis Sie kommen aus dem Baum, und dann unter Verwendung von maximal Komplexität ist, wo die Tiefe des Baumes, wie in Jede rekursive Schritt, den Sie gehen eine Ebene Baum; oder wenn der rechte Teilbaum des Knotens nicht vorhanden ist, gehen auf den Baum, bis Sie einen Knoten von der die vorliegende man seinen linken Unterbaum gehören, zu finden, dass dieser rekursive Operation, und dass jeder Schritt zurück eine Ebene des Baumes, dann unter Verwendung eines algorithmischen Komplexität gleich auch in diesem Fall.

Der Löschvorgang dann eine letzte Komplexität ist, wo die Tiefe des Baumes.

Implementierungen

Eine Implementierung des Algorithmus in der Sprache Pascal sieht folgendermaßen aus:

Implementieren Sie binäre Suche Bäume auf Arrays

Wenn Sie nicht brauchen, um häufiger einzusetzen und abgebrochen oder gar nicht durchgeführt werden müssen und zu viel Speicher verwenden, können Sie einen binären Suchbaum auf einem sortierten Array zu implementieren, mit der Einschränkung, nicht wollen, dass die Anzahl der Elemente mit beiden.

Das Bild oben zeigt einen binären Suchbaum auf einem sortierten Array von 15 Elementen implementiert, indem die Mitte der Anordnung als eine Wurzel des Baumes und seiner Blätter als jeweils der Mitte der rechten Seite der Anordnung und dem Zentrum von Anfang an Sie links des Arrays, geht es rekursiv Anwendung den Vorgang, bis Sie alle Elemente abgedeckt haben. Es wird so erhalten, das entspricht der Welle

die Pseudo-Algorithmus für die Suche eines Schlüssels

  0   0
Vorherige Artikel Antedonidae
Nächster Artikel Zonkey

In Verbindung Stehende Artikel

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha