AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Binärer Suchbaum Knoten entfernen

Ein Thema von Fehlersucher · begonnen am 19. Dez 2012 · letzter Beitrag vom 5. Jan 2013
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: Binärer Suchbaum Knoten entfernen

  Alt 21. Dez 2012, 14:36
Edit: @Zacherl
Er meinte, es soll nur ein Knoten entfernt werden. Alle darunterliegenden Subnodes müssen erhalten bleiben!
Da bin ich mir nämlich nicht so sicher, wie ich die Aufgabe verstehen darf

@Fehlersucher:
Deinem Code oben entnehme ich, dass du ZWISCHEN entfernen willst. Da du ZWISCHEN mit Suchbaum.getLinken() ermittelst, ist Suchbaum selbst folglich die Root Node von ZWISCHEN. In diesem Falle setzt du einfach Suchbaum.left auf nil und zerstörst den vorher ermittelten ZWISCHEN.
Hierbei nochmal der Hinweis, dass dann auch alle Unterknoten von ZWISCHEN gelöscht werden. Willst du das verhindern und trotzdem die Korrektheit des Baums beibehalten, musst du dich an Aphtons Algorithmus halten.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Fehlersucher

Registriert seit: 10. Nov 2012
32 Beiträge
 
#2

AW: Binärer Suchbaum Knoten entfernen

  Alt 21. Dez 2012, 19:34
Nein, ZWISCHEN wollte ich nicht entfernen.
ZWISCHEN ist meine Zwischenvariable.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Binärer Suchbaum Knoten entfernen

  Alt 22. Dez 2012, 16:05
Dann nochmal ein Paar Fragen, um Klarheit zu bekommen:

1) Enthält deine TSuchbaum Klasse eine Funktion getRoot() / getParent() bzw. irgendeine Funktion, die dir die übergeordnete Node zurückgibt?
2) Willst du wirklich nur einen Knoten entfernen und die Elemente, die sich darunterbefinden beibehalten oder sollen die Unterknoten der entfernten Node auch zerstört werden?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Fehlersucher

Registriert seit: 10. Nov 2012
32 Beiträge
 
#4

AW: Binärer Suchbaum Knoten entfernen

  Alt 2. Jan 2013, 13:12
Entschuldigung, dass ich so spät schreibe. Hatte einige Zeit nicht mehr reingeguckt.


1) Nein, TSuchbaum enthält keine derartigen Klassen
2) Es soll nur ein Knoten entfernt werden, alle Unterknoten sollen beibehalten werden.

Es ist natürlich fraglich, wie ich die Unterknoten jetzt richtig an den Baum hänge.

Könnte mir jemand Sprachcode etc. zeigen?

Hat jemand vielleicht allgemeinen Sprachcode für eine Löschprozedur von Knoten?

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Binärer Suchbaum Knoten entfernen

  Alt 2. Jan 2013, 14:38
Ich versteh nicht, warum du mich ignorierst...
Programmieren sollte es dir keiner!

-.-
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Binärer Suchbaum Knoten entfernen

  Alt 2. Jan 2013, 16:14
Hat jemand vielleicht allgemeinen Sprachcode für eine Löschprozedur von Knoten?
http://de.wikipedia.org/wiki/Bin%C3%...m#L.C3.B6schen
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Fehlersucher

Registriert seit: 10. Nov 2012
32 Beiträge
 
#7

AW: Binärer Suchbaum Knoten entfernen

  Alt 3. Jan 2013, 09:17
@ Aphton

Das habe ich nicht. Am 21. Dezember schrieb ich bereits:
Zitat:
@ Aphton:
Danke für die Beschreibung. Aber dies scheint mir zu viel zu sein. Es wurden eigentlich keine Abstände gezählt (man brauchte ja auch keine weitere Variable).
@ Zacherl

Danke für den Link.
In dem Beispiel hat der Knoten, welcher gelöscht wird 2 Kinder. Mein Knoten hat nur ein Kind.
Kann man einfach Teile des Codes aus dem Beispiel vernachlässigen?

Ich habe mich wirklich einige Zeit mit dem Problem beschäftigt, komme einfach aber nicht auf die Lösung.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: Binärer Suchbaum Knoten entfernen

  Alt 3. Jan 2013, 16:29
In dem Beispiel hat der Knoten, welcher gelöscht wird 2 Kinder. Mein Knoten hat nur ein Kind.
Kann man einfach Teile des Codes aus dem Beispiel vernachlässigen?
Da hast du glaube ich nicht ganz richtig gelesen.

Zitat von Wikipedia:
Fall A: Zu löschender Knoten hat höchstens ein Kind.

Ist der Knoten ein Blatt (Knoten ohne Kinder), dann wird beim Löschen einfach der Knoten entfernt. Hat der zu löschende Knoten genau ein Kind, wird dieses an die Stelle des zu löschenden Knotens gesetzt.

Fall B: Zu löschender Knoten hat zwei Kinder.

[..]
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz