Binäre Suchbäume remove

MrXeth

Aktives Mitglied
moin, warum sucht man beim löschen eines Elements mit 2 Kindknoten oder mehr das kleinste im rechten kindbaum bzw. das größte im linken kindbaum? Man könnte ja auch das erste nehmen und die referenzen ändern. Als vorteil sehe ich nur einen einen näheren wert an dem gelöschten knoten und als nachteil eine längere Laufzeit.

Danke für eure hilfe ^^
 
Da kann man dann aber doch trotzdem den direkten linken kindknoten eig wählen und referenzen ändern , sodass das kriterium erfüllt ist??
 
Bildlich:
Code:
    4
 2     6
1 3   5 7

Alternative 1: Löschen der 4 durch Ersetzen mit 2:

    2
1 3    6
      5 7

Problem: 3 > 2 befindet sich im linken Teilbaum von 2

Alternative 2: Löschen der 4 durch Ersetzen mit 6:

    6
 2    5 7
1 3  

Problem: 5 < 6 befindet sich im rechten Teilbaum von 6

Welche Referenzen willst Du denn ändern?
 
BTW: wenn Du den Suchbaum als Array darstellst, wirds noch einfacher. Der Baum oben wäre [1,2,3,4,5,6,7]. Wir löschen die 4: [1,2,3,5,6,7]

Abgebildet als Baum:
Code:
    3
  1   6
   2 5 7
oder
Code:
    5
  2   6
 1 3   7
 

Zurück
Oben