Hallo,
Ich habe die Aufgabe einen Binären Suchbaum "grafisch" darzustellen.
°°°°°°°°°°°°°40°°°°°°°°°°°°°
°°°°°°°°°°°°°/\°°°°°°°°°°°°°° °- Leerzeichen
°°°°°°°°°°°°/°°\°°°°°°°°°°°°°
°°°°°°°°°°°/°°°°\°°°°°°°°°°°°
°°°°°°°°°°/°°°°°°\°°°°°°°°°°°
°°°°°°°°°12°°°°°57°°°°°°°°°°
°°°°°°°°°/\°°°°°°/\°°°°°°°°°°°
°°°°°°°°/°°\°°°°/°°\°°°°°°°°°°
°°°°°°°5°°20°°43°°90°°°°°°°°
Zur zeit tut er aber nur:
°°°°°°°°°°°°°40°°°°°°°°°°°°°
°°°°°°°°°°°°°/\°°°°°°°°°°°°°°
°°°°°°°°°°°°/°°\°°°°°°°°°°°°°
°°°°°°°°°°°/°°°°\°°°°°°°°°°°°
°°°°°°°°°°/°°°°°°\°°°°°°°°°°°
°°°°°°°°°12°°°°°57°°°°°°°°°°
°°°°°°°°°/°°°°°°°°\°°°°°°°°°°
°°°°°°°°/°°°°°°°°°°\°°°°°°°°°
°°°°°°°5°°°°°°°°°°°43°°°°°°°
°°°°°°/°°°°°°°°°°°°°°\°°°°°°°
°°°°°20°°°°°°°°°°°°°90°°°°°°
Hier der Code:
// Grafik zum Baum
//in ganzerBaum[] stehen einfach die Werte drin
void BinBaum:
rintTree(node ganzerBaum[]){
/* Bedingungen: Die Länge der „Äste“ entspricht genau der Zweierpotenz der noch darunterliegenden Ebenen. (Bsp.:2 hoch 3 = Länge 8 zwischen Knoten 40 und Knoten 12). Der Abstand zwischen zwei sog. „gleichgeordneten“ oder Geschwister-Knoten entspricht dem Platzbedarf der BlattElemente darunter. Für jeden Blattknoten werden inkl. Leerraum zum nächsten 4 Zeichen benötigt (bei Zahlen <100). Daher sind es 4 * «max. Anzahl Blätter» abzüglich 2 Zeichen (Bsp.: 14 Zeichen zwischen Knoten 12 und Knoten 45).*/
int helper = pow(2.0, maxdepth());
int width = (helper*4)-2;
int length = 8;
int space1 = width/2;
int space2 = 0;
int array_count = 1;
int line = 2;
// Erster wert, root
//setzt Leerzeichen
spaces(space1);
cout << ganzerBaum[0].getValue() << endl;
// Und die nachfolgenden Werte
// Zeichne solange Aeste bis lenght = 0
do{
// Wiederholde die Astgabelung mehrmals: 1, 2, 4, 8, 16
// Funktioniert irgendwie nicht
do{
// Zeichne die Aeste mit "/" und "\"
for (int i = 0; i <length; i++){
spaces(space1);
cout << "/";
spaces(space2);
cout << "\\";
spaces(space1);
cout << endl;
space1 = space1-1;
space2 = space2+2;
}
// Wenn die Aeste lang genug, dann schreibe die Werte hin
// Da sind jetzt wegen der fehlenden Wiederholung falsche
// Spruenge drin
spaces(space1);
cout << ganzerBaum[array_count].getValue();
array_count++;
spaces(space2-1);
cout << ganzerBaum[array_count].getValue();
array_count++;
spaces(space1);
line--;
cout << endl;
} while( line == 1);
length = length/2;
space1 = space1-1;
space2 = space2+2;
width = width/2;
line = line*2;
} while (length != 0);
}
Vielleicht könnt ihr mir sagen was mir fehlt zur richtigen Darstellung
Ich habe die Aufgabe einen Binären Suchbaum "grafisch" darzustellen.
°°°°°°°°°°°°°40°°°°°°°°°°°°°
°°°°°°°°°°°°°/\°°°°°°°°°°°°°° °- Leerzeichen
°°°°°°°°°°°°/°°\°°°°°°°°°°°°°
°°°°°°°°°°°/°°°°\°°°°°°°°°°°°
°°°°°°°°°°/°°°°°°\°°°°°°°°°°°
°°°°°°°°°12°°°°°57°°°°°°°°°°
°°°°°°°°°/\°°°°°°/\°°°°°°°°°°°
°°°°°°°°/°°\°°°°/°°\°°°°°°°°°°
°°°°°°°5°°20°°43°°90°°°°°°°°
Zur zeit tut er aber nur:
°°°°°°°°°°°°°40°°°°°°°°°°°°°
°°°°°°°°°°°°°/\°°°°°°°°°°°°°°
°°°°°°°°°°°°/°°\°°°°°°°°°°°°°
°°°°°°°°°°°/°°°°\°°°°°°°°°°°°
°°°°°°°°°°/°°°°°°\°°°°°°°°°°°
°°°°°°°°°12°°°°°57°°°°°°°°°°
°°°°°°°°°/°°°°°°°°\°°°°°°°°°°
°°°°°°°°/°°°°°°°°°°\°°°°°°°°°
°°°°°°°5°°°°°°°°°°°43°°°°°°°
°°°°°°/°°°°°°°°°°°°°°\°°°°°°°
°°°°°20°°°°°°°°°°°°°90°°°°°°
Hier der Code:
// Grafik zum Baum
//in ganzerBaum[] stehen einfach die Werte drin
void BinBaum:
![Zunge rausstrecken](https://entwickler-forum.de/core/images/smilies/tongue.png)
/* Bedingungen: Die Länge der „Äste“ entspricht genau der Zweierpotenz der noch darunterliegenden Ebenen. (Bsp.:2 hoch 3 = Länge 8 zwischen Knoten 40 und Knoten 12). Der Abstand zwischen zwei sog. „gleichgeordneten“ oder Geschwister-Knoten entspricht dem Platzbedarf der BlattElemente darunter. Für jeden Blattknoten werden inkl. Leerraum zum nächsten 4 Zeichen benötigt (bei Zahlen <100). Daher sind es 4 * «max. Anzahl Blätter» abzüglich 2 Zeichen (Bsp.: 14 Zeichen zwischen Knoten 12 und Knoten 45).*/
int helper = pow(2.0, maxdepth());
int width = (helper*4)-2;
int length = 8;
int space1 = width/2;
int space2 = 0;
int array_count = 1;
int line = 2;
// Erster wert, root
//setzt Leerzeichen
spaces(space1);
cout << ganzerBaum[0].getValue() << endl;
// Und die nachfolgenden Werte
// Zeichne solange Aeste bis lenght = 0
do{
// Wiederholde die Astgabelung mehrmals: 1, 2, 4, 8, 16
// Funktioniert irgendwie nicht
do{
// Zeichne die Aeste mit "/" und "\"
for (int i = 0; i <length; i++){
spaces(space1);
cout << "/";
spaces(space2);
cout << "\\";
spaces(space1);
cout << endl;
space1 = space1-1;
space2 = space2+2;
}
// Wenn die Aeste lang genug, dann schreibe die Werte hin
// Da sind jetzt wegen der fehlenden Wiederholung falsche
// Spruenge drin
spaces(space1);
cout << ganzerBaum[array_count].getValue();
array_count++;
spaces(space2-1);
cout << ganzerBaum[array_count].getValue();
array_count++;
spaces(space1);
line--;
cout << endl;
} while( line == 1);
length = length/2;
space1 = space1-1;
space2 = space2+2;
width = width/2;
line = line*2;
} while (length != 0);
}
Vielleicht könnt ihr mir sagen was mir fehlt zur richtigen Darstellung
Comment