Bäume

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hey leute, hab einen kleinne algorithus geschrieben, der zu einem knoten mit index i den index des elternknotens zurückliefert für einen d-Baum (also für d=3 wäre es ein binärerbaum usw)

die knoten sind dabei einfach von links nach rechts durchindiert, d.h. beim binären baum zB hat die wurzel hat den index 1 der linke tochterknoten den index 2, der rechte tochterknoten den index 3 usw.

Code:
public int getParent(float i){
	if     (i%d==0) return (int)(i/d);
	else if(i%d==1) return (int)(i/d-1d/d);
		
		
	for(int j=2;j<=d-2;j++){
	    if(i%d==j) return (int)((i/d)+(d-(i%d))/d); 
	}

	return -1; //dürfte nie passieren
}

Code:
der code ist etwas schwer zu erklären, ich hoffe ihr versteht ihn +g+

gruß
 
S

SlaterB

Gast
schön zu hören, was du so machst..

ist da auch eine Frage dabei? ;)
 

Angel4585

Bekanntes Mitglied
bricht eine Methode eigentlich sofort ab wenn ein return kommt? ansonsten würde ja jedesmal -1 rauskommen
 
S

SlaterB

Gast
hmm, wenn eine Operation bei return nicht abbricht, was sollte sie dann sonst machen?
wozu wird dann return benutzt? ;)
 

Angel4585

Bekanntes Mitglied
sorry bins von den functions aus delphi gewohnt, da gibt es die Variable "Result" und der kann man solange einen wert geben bis die Funktion beendet ist, also auch mehrfach irgendwie überschreiben.
 
G

Gast

Gast
ne nachdem ersten return ist ende.

die frage ist folgende +g+

der algorithmus ist falsch aber ich finde den fehler nicht :(

sieht den einer von euch oder hat einen alternativen vorschlag? ich hab sonst gar keine ahnung :(

wie würdet ihr das machen?
 
S

SlaterB

Gast
nenne ein Beispiel, bei dem es nicht funktioniert,
muss man denn wirklich Schritt für Schritt nachfragen?

wenn du das Beispie gefunden hast, dann kannst du eigentlich auch selber nachschauen was das Programm macht,
dies mit deinem vorgegebenen Regeln vergleichen und den Fehler finden
 
S

SlaterB

Gast
das ist doch keine Problembeschreibung..
so muss ich mir erst selbst einen Baum aufmalen um dann zu sehen,
dass der Parent von 9 gleich 4 ist und deine Formel totaler Quatsch..

die 3 Min. hättest du mir ersparen können, denn du wusstes das ja schon längst/ hättest einen Beispielbaum malen können usw.

also einfache Formel für Binärbaum:
wenn i gerade, dann i/2, ansonsten (i-1)/2

das ist sicherlich noch nicht der Weisheit letzter Schlusss für alle d,
deshalb als nächstes d=4 anschauen und dafür ne Formel entwickeln,
die dann hoffentlich ähnlich aufgebaut ist (starke Vermutung: hat was mit /3 zu tun)

wenn man es noch nicht sieht dann noch für d=4 untersuchen usw.

also in deiner Weltformel ist überall von /d die Rede, ganz kühn vermute ich, dass du mit /(d-1) besser fährst
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben