klassenproblem
-
also ein binärbaum besteht ja aus dem vater und den zeigern auf die 2 söhne
sohn1-vater-sohn2bei mir als bsp. : 4 knoten aslo:
sohn1-vater-sohn2-vater-sohn3-vater-sohn4-vater-sohn5
-
Du meinst, statt einem Binärbaum mit exakt zwei Unterknoten willst du beliebig viele Unterknoten haben können?
Dann nimmst du am besten std::vector<Node*> bzw. std::list<Node*>:struct Node // kannst natürlich auch eine Klasse daraus machen { std::vector<Node*> vSubnodes; // oder std::list<Node*> Data data; // deine Nutzdaten je Knoten };
-
Machst du halt ne Liste von Kindern.
-
nivbi schrieb:
also ein binärbaum besteht ja aus dem vater und den zeigern auf die 2 söhne
sohn1-vater-sohn2Und jeder der beiden Söhne ist wiederum ein entsprechend kleinerer Binärbaum

bei mir als bsp. : 4 knoten aslo:
sohn1-vater-sohn2-vater-sohn3-vater-sohn4-vater-sohn5Du meinst, daß jeder Knoten eine variable Anzahl an Nachfolgern haben soll? Das könntest du erreichen, indem du die Verweise auf die Söhne in einem vector<> o.ä. verwaltest.
(eine Alternative besteht auch darin, so einen Baum durch einen Binärbaum nachzubilden, bei dem jeder Knoten einen Zeiger auf seinen ältesten Sohn und den nächstjüngeren Bruder hat)
-
sorry aber das hab ich nun gar nicht verstanden mit vector und Data

-
CStoll schrieb:
Du meinst, daß jeder Knoten eine variable Anzahl an Nachfolgern haben soll?
der user gibt an wieviele knoten ein baum haben soll und so wird der baum auch
immer constant fortgesetzt.
sohn1-vater1-sohn2-vater2-sohn3-vater3-sohn4
(die söhne zeigen dann jeweils wieder auf einen baum mit 4 söhnen und 3 vätern.wie stelle ich dies in einer klasse dar?
-
Kannst du das mal bitte zweidimensional darstellen - bei deiner Liste der Väter und Söhne verliert man ja den Überblick.
-
user gibt knotenanzahl=2 ein, durch die formel 2*k ergibt dies 4:
also sieht mein baum so aus mit folgenden eingaben: 1,2,3,4,5_________ [u]|3 | | | |[/u] | | | | v v _________ _________ [u]|1|2| | |[/u] [u]|4|5| | |[/u]weiter ausbaubar...
ich hoffe mich jetzt verständlich ausgedrückt zu haben...
-
und was ist daran jetzt so schwer? Du weißt doch was man mit einer liste oder einem vector machen kann, oder?
-
nein, leider komme ich einfach nicht drauf.
ich versuche mich die ganze zeit mit doppelt verketteten listen, aber leider kann ich
nicht einmal nur die wurzel bilden, weiß éinfach nicht wie das geht.
definiere class baum mit :[cpp]int wert;
Baum *links;
Baum *rechts;
};
das klappt ganz gut mit einem binärbaum
aber was ist mit meinem baum, wenn sich die zeiger doch ???vereinen???habe einen knoten definiert, und da der user beliebige anzahl von knoten
verlangen kann, weiß ich nicht wie ich dies erweitern kann...
-
Na, so wie es Th beschrieben hat.
Weißt du denn was ein vector bzw. Array ist?
-
löcheringlücklichkeit schrieb:
Na, so wie es Th beschrieben hat.
Weißt du denn was ein vector bzw. Array ist?ja das weiß ich, aber leider weiß ich mir nicht zu helfen.
genauer gesagt, finde ich einfach den anfangsfaden nicht....
-
Na gut, versuch mal das als Ansatz:
class baum_el { int wert; std::vector<baum_el*> kinder; };
-
entschuldigt, dass ich mich wieder melde und stören muss....
mir ist "bildlich" nicht klar, wie durch diesen codeclass baum_el { int wert; std::vector<baum_el*> kinder; };mein baum aussehen soll....
ich meine wohin zeigt mein pointer genau hin? ich hab das nicht verstanden.ps: dies ist keine hausaufgabe für die schule oder das studium.
ich mach zu hause einfach ma so ein selbststudium, daher meine unwissenheit.gruß
-
Das ist nicht nur ein pointer, sondern ein vector in dem du alle pointer, die auf Kinderknoten dises Knotes zeigen, speichern kannst.