![]() |
Sortiertet Baum in Java
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
vorweg: ich weiß, dass es hier verpönt ist, Aufgaben / Übungen zu posten und dann auf Lösungen zu hoffen, jedoch komme ich bei dieser Übung echt nicht weiter (liegt auch zum Teil daran, dass unser Prof denkt, dass wir deutlich mehr Programmierkenntnisse in Java haben, als wir vom Java-Prof bisher vermittelt bekommen haben.) Ich fände es nett, wenn mir jemand bei der Lösung helfen könnte, oder mir vielleicht eine Art "Pseudo-Code" geben könnte. Wenn hingegen mein Topic garnicht wilkommen ist, bitte ich um Entschuldigung und um Löschung.. Aufgabe: Vervollständigen Sie die gegebene Methode insert(key, value) der Klasse SortedTreeNode. (Klassen des Programms und "Erklärungsbild" sind im Anhang). |
AW: Sortiertet Baum in Java
Hi,
wo hängt es denn konkret? LG, Frederic |
AW: Sortiertet Baum in Java
Habe mir das gerade mal angesehen, aber paar Worte deinerseits damit man sich nicht in alles reindenken muss wäre hilfreich.
Code:
public void insert(Integer key, String value){
if(key<this.key) this.key = key; int index = this.search(key); if(isLeafLevel){ //insert into leaf //TODO: complete code insert(index, new SortedTreeLeaf(key, value)); } else{ //insert into node //TODO: complete code SortedTreeNode node = new SortedTreeNode(this.isLeafLevel); node.key = key; //// hier noch irgendwie Value setzten ??? insert(index, node); //// eigentlich erst prüfen ob voll ? //split if needed if(node.isFull()){ //TODO: complete code } } } |
AW: Sortiertet Baum in Java
Code:
Damit wird ein neues Blatt mit Key und Value erstellt und an dem Index eingefügt. Aber welche insert-Methode rufst du hier auf? Die 2te Methode verlangt doch einen SortedTree und kein SortedTreeLeaf oder?
if(isLeafLevel){
//insert into leaf //TODO: complete code insert(index, new SortedTreeLeaf(key, value)); }
Code:
Das selbe hier, wo ist den die Insert-Methode, der ich eine node mitgeben kann?
insert(index, node);
Keine Kritik, ich verstehs nur nicht. Des weiteren habe ich dies noch in der Aufgabe gefunden, denke das ist für das Splitten wichtig: Zitat:
Code:
public void insert(Integer key, String value){
if(key<this.key) this.key = key; int index = this.search(key); if(isLeafLevel){ //insert into leaf //TODO: complete code insert(index, new SortedTreeLeaf(key, value)); } else{ //insert into node //TODO: complete code SortedTreeNode node = new SortedTreeNode(this.isLeafLevel); node.key = key; index = this.search(node.key); insert(index, new SortedTreeLeaf(key, value); //split if needed if(node.isFull()){ //TODO: complete code } } } |
AW: Sortiertet Baum in Java
Hi,
es gibt 2 insert-Methoden (die andere steht über der, die ergänzt werden muss). Wir müssen also nicht wirklich was neues hinzufügen, sondern nur eine Vorauswahl treffen, sprich müssen schauen, ist es nun ein Blatt oder ist es ein Knoten (und bei zu vielen Knoten irgendwie teilen ???). Die Klasse SortedTreeLeaf (innerhalb SortedTreeLeaf.java) erbt von SortedTree, deshalb kann man auch Objekte davon nutzen (genauso wie SortedTreeNode). Außerdem ist SortedTree nur eine abstrakte Klasse, wird schwer davon ein Objekt zu erzeugen ;) Wenn es kein Knoten ist braucht man eigentlich auch nicht den Value Wert, sprich man kann SortedTreeNode benutzen. Also mein Ansatz scheint in die richtige Richtung zu weisen. Letztendlich fehlt noch die Sache mit dem Split, also ich hab den Teil noch nicht so durchdrungen... PS: Dein Ansatz macht für mich kein Sinn, im Teil, wo es um die Knoten geht wird erst ein SortedTreeNode erstellt und dann noch ein SortedTreeLeaf welcher dann hinzugefügt wird. Also mit dem erzeugten SortedTreeNode wird nichts gemacht. Sieht für mich so aus als hättest du in der Vorlesung mehr geschlafen als zugehört ;) Grüße |
AW: Sortiertet Baum in Java
Ja, soweit ist es klar. Ich habe die Aufgabe aber so verstanden, dass in den Knoten nur die "key"s stehen (also keine Daten, richtig) und diese dann wiederherum auf die Blätter verweisen, die die Daten enthalten.
Also müsste man doch bei dem else-Fall erst einen Knoten erstellen, diesen an den Baum hängen und dann für diesen Knoten noch ein Blatt erstellen.
Code:
Denkfehler?
SortedTreeNode node = new SortedTreeNode(this.isLeafLevel);
node.key = key; //hänge Knoten hier irgendwie an Baum, Code fehlt hier noch?! index = this.search(node.key); //hier wird dann das Blatt erstellt mit den Daten am neu erstellten Knoten insert(index, new SortedTreeLeaf(key, value); |
AW: Sortiertet Baum in Java
Zitat:
Zitat:
Bevor wir jetzt aber mit "insert" einen Knoten hinzufügen, müssen wir doch prüfen ob es schon voll ist oder erst danach ? |
AW: Sortiertet Baum in Java
Ersteres stimmt ja.
Zitat:
Zitat:
Code:
3 beträgt und splittet nachträglich Knoten [1,2,3,4] in [1,2] und [3,4]. So zeigt es jedenfalls das Schaubild.
public static int MAX_SIZE = 3;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 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