<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[@CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum)]]></title><description><![CDATA[<p>Hallo CStoll,</p>
<p>wie du schon in einiger meiner anderen threads Hilfe geleistet hast,</p>
<p>hast du mir den tipp gegenen bein dynamischer Baum mit hilfe<br />
der std::list umzusetzen, und diesen dann zu iterieren.</p>
<p>Dein Hilfe- Code war:</p>
<pre><code class="language-cpp">class node 
{ 
  list&lt;node&gt; children; 
  list&lt;node&gt;::iterator father; 
  ... 
}; 

class baum_iterator 
{ 
  typedef list&lt;node&gt;::iterator pos_type; 
  pos_type pos; 
public: 
  baum_iterator&amp; operator++() 
  { 
    post_type father = pos-&gt;father; 
    ++pos; 
    if(pos==father-&gt;children.end()) 
      durchhangeln zum nächsten Cousin 
    return *this; 
  } 
};
</code></pre>
<p>Nun bin ich da stunden dran gesessen dies hinzukriegen, aber mein Horizont hats nich geschafft.. meinst du könntest mit das mal näche erleutern bzw, implementiere damit ich mal weiter komme:</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185611/cstoll-hilfe-von-deiner-kompetenz-dynamischer-datenstruktur-baum</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 05:49:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185611.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jun 2007 07:24:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 07:24:53 GMT]]></title><description><![CDATA[<p>Hallo CStoll,</p>
<p>wie du schon in einiger meiner anderen threads Hilfe geleistet hast,</p>
<p>hast du mir den tipp gegenen bein dynamischer Baum mit hilfe<br />
der std::list umzusetzen, und diesen dann zu iterieren.</p>
<p>Dein Hilfe- Code war:</p>
<pre><code class="language-cpp">class node 
{ 
  list&lt;node&gt; children; 
  list&lt;node&gt;::iterator father; 
  ... 
}; 

class baum_iterator 
{ 
  typedef list&lt;node&gt;::iterator pos_type; 
  pos_type pos; 
public: 
  baum_iterator&amp; operator++() 
  { 
    post_type father = pos-&gt;father; 
    ++pos; 
    if(pos==father-&gt;children.end()) 
      durchhangeln zum nächsten Cousin 
    return *this; 
  } 
};
</code></pre>
<p>Nun bin ich da stunden dran gesessen dies hinzukriegen, aber mein Horizont hats nich geschafft.. meinst du könntest mit das mal näche erleutern bzw, implementiere damit ich mal weiter komme:</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314662</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 29 Jun 2007 07:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 07:32:30 GMT]]></title><description><![CDATA[<p>Woran hängt es denn? An dem Teil &quot;durchhangeln bis zum nächsten Cousin&quot;?</p>
<p>Wenn ja: Du mußt so lange den father-&quot;Zeigern&quot; folgen, bis du zu einem Vorfahren kommst, der nicht am Ende der entsprechenden Liste steht (der Test verläuft analog zu dem obigen). Dann wechselst du zu dessen jüngeren Bruder und gehst so lange über pos-&gt;children.begin() nach unten, bis du bei einem Blattknoten ankommst (Blattknoten haben keine Kinder, also gilt pos-&gt;children.empty()).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314669</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 07:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 07:41:00 GMT]]></title><description><![CDATA[<p>die ganze denk geschichte mit den vater iterator etc. und das durchhängel zum cousin versteh ich auch nich wie ich das machen soll...</p>
<p>Wer nett wenn du da mir noch bischen Code geben könnest, damit ich es vll. dann verstehe...</p>
<p>Wie du selbst weis ist es hier im forum schwer zu erklären wo genau meine probleme liegen.. nich in worten zu fassen:)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314672</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 29 Jun 2007 07:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 09:35:57 GMT]]></title><description><![CDATA[<p>ich verzweifel....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314773</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 11:08:56 GMT]]></title><description><![CDATA[<p>Die Details müsstest du vermutlich nochmal in der Praxis anpassen, aber hier eine Prinziplösung:</p>
<pre><code class="language-cpp">//nach oben:
pos_type father,brother;
while(brother!=father-&gt;children.end())
{
  brother=pos=father;
  ++brother;
  father=pos-&gt;father;
}
//seitwärts zum Großonkel
pos=brother;
//abwärts bis nur Wurzel edit: natürlich zum Blatt
while(!pos-&gt;children.empty())
  pos=pos-&gt;children.begin();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1314785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314785</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 11:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 09:55:00 GMT]]></title><description><![CDATA[<p>der fahter iterator, ist quasie immer die position des Knoten vom Vater Knoten aus?</p>
<p>oder</p>
<p>einfach ein Zeiger auf den Vater?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314789</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 10:05:01 GMT]]></title><description><![CDATA[<p>Fast - 'father' ist ein Iterator auf den Vaterknoten, zeigt also auf dessen Position in der Kinderliste des Großvaters. Für die Wurzel brauchst du da womöglich eine Sonderbehandlung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314807</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 11:06:55 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Für die Wurzel brauchst du da womöglich eine Sonderbehandlung.</p>
</blockquote>
<p>Eventuell sollte man noch eine Paradontose Prophylaxe in Erwägung ziehen.</p>
<p>MfG<br />
Dr. Best Plus Plus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314867</guid><dc:creator><![CDATA[Dr. Best Plus Plus]]></dc:creator><pubDate>Fri, 29 Jun 2007 11:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 11:10:49 GMT]]></title><description><![CDATA[<p>Dr. Best Plus Plus schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Für die Wurzel brauchst du da womöglich eine Sonderbehandlung.</p>
</blockquote>
<p>Eventuell sollte man noch eine Paradontose Prophylaxe in Erwägung ziehen.</p>
<p>MfG<br />
Dr. Best Plus Plus</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314872</guid><dc:creator><![CDATA[Freund des hohen Humors]]></dc:creator><pubDate>Fri, 29 Jun 2007 11:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Fri, 29 Jun 2007 11:39:56 GMT]]></title><description><![CDATA[<p>Dr. Best Plus Plus schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Für die Wurzel brauchst du da womöglich eine Sonderbehandlung.</p>
</blockquote>
<p>Eventuell sollte man noch eine Paradontose Prophylaxe in Erwägung ziehen.</p>
<p>MfG<br />
Dr. Best Plus Plus</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314894</guid><dc:creator><![CDATA[:D  :live:]]></dc:creator><pubDate>Fri, 29 Jun 2007 11:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 06:11:42 GMT]]></title><description><![CDATA[<p>oh man.. ich bekomms net hin... so ein scheiss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316570</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 06:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:10:31 GMT]]></title><description><![CDATA[<p>Dann zeig doch mal, was du hast und an welcher Stelle du nicht weiterkommst.</p>
<p>@Dr. Best: Danke für deine Versuche, die Situation aufzulockern <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Aber wenn du nichts vom Thema verstehst, halt dich besser da raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316609</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:10:31 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:20:29 GMT]]></title><description><![CDATA[<p>Hallo CStoll.. ich kommt mit der ganzen Logig vator ,bruder, pos der iteratornen nicht klar... das ganze ding hab ich schon überpointer gecoded.. aber ich denke mit listen ist das ganze schneller und sichere.. und übersichtlicher..</p>
<p>das hab ich biser großteil von dir übernommen:</p>
<pre><code class="language-cpp">class node 
{ 
public: 
	std::list&lt;node&gt; children; 
	std::list&lt;node&gt;::iterator father; 
	int i;

	node(int k) : i(k){}
}; 

class baum_iterator 
{ 
	typedef std::list&lt;node&gt;::iterator pos_type; 
	pos_type pos,brother; 
public: 

	baum_iterator(node *p) :pos(p-&gt;father-&gt;children.begin()){

		brother= ++p-&gt;father;

		p-&gt;father= p-&gt;children.begin();
	} 
  baum_iterator&amp; operator++(){ 

	  //Iterator von father
 /*   post_type father = pos-&gt;father; 
    ++pos; */
   /* if(pos==father-&gt;children.end()) 
      durchhangeln zum nächsten Cousin */
	pos_type father,brother; 

	//abwärts bis nur Wurzel edit: natürlich zum Blatt 
	if(!pos-&gt;children.empty()){
		pos=pos-&gt;children.begin();
		return;
	}
	else if(pos-&gt;father != 

	//seitwärts zum Großonkel 
	pos=brother; 

	//nach oben: 

	while(brother==father-&gt;children.end()) { 
		brother=pos-&gt;father; 
		++brother; 
		father=pos-&gt;father; 
	} 

    return *this; 
  } 
}; 
class Base{

public:
	node oRoot;

	Base() : oRoot(0){}

};
</code></pre>
<p>Die Klasse Base enthät beim erzeugen die Wurzel.. soweit bin ich.. die ganze Sose mit der travsieren des Baumes bekomm ich einfach nicht hin..</p>
<p>Ich wäre dir ewig dankbar wenn du mit eine funktionierende einfache version posten könntes wo das iterieren funktioniert.. Ich komm sonst nie weiter... und die Pointer version ist mir nicht so geheuert..</p>
<p>Danke und Grüße @ CStoll:)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316612</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:29:29 GMT]]></title><description><![CDATA[<p>*grübelt*<br />
Was genau sollen die Initialisierungen im Ctor bewirken? Du setzt pos auf den ältesten Bruder des übergebenen Knoten und brother auf seinen Onkel - und dann zerstörst du die Baumstruktur, indem du den Vater des übergebenen Knoten neu setzt.</p>
<p>Und die Reihenfolge während der Arbeit passt auch nicht so richtig - du mußt erst nach oben und dann nach unten zum nächstfolgenden Blatt.<br />
*sehr lange nachdenkt*<br />
Also irgendwie habe ich inzwischen das Gefühl, daß die STL da am Ende angekommen ist. Wenn du mit deiner zeigerbasierten Baumstruktur besser zurechkommst, solltest du vielleicht die verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316613</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:33:28 GMT]]></title><description><![CDATA[<p>die durchhänglerei auf Zeiger Basis is mir klar.... aber das ganze mit iteratoren umzusetzen hab ich schwierigkeit.. wenn du mir ne lösung geben könnten (was für dich kein son aufwandt sein drüfte oder?), würd ich das mit den iteratoren verstehen können...</p>
<p>die initialisierugnen im C-tor waren nur spielrei.. hab bei dieser implementation grad voll die blockade...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316614</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:33:28 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:39:07 GMT]]></title><description><![CDATA[<p>Wie gesagt, die Reihenfolge ist wichtig: du befindest dich ganz unten im Baum am Ende einer Nachfolger-Liste - da ist der Nachfolger der &quot;(Groß)Cousin&quot; des aktuellen Knotens. Und um da hin zu gelangen, mußt du:</p>
<ol>
<li>dich entlang der father-Iteratoren nach oben hangeln bis zum ersten Knoten, der noch einen jüngeren Bruder hat</li>
<li>einen Schritt weiter gehen zu diesem jüngeren Bruder</li>
<li>entlang der children.begin()-Iteratoren nach unten durchhangeln bis du bei einem Blatt angekommen bist</li>
</ol>
<p>(du hast die Schritte 1 und 3 vertauscht und den Trivialfall auskommentiert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316618</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 08:50:16 GMT]]></title><description><![CDATA[<p>ok.. und wies sieht der Konstruktor des Iterators aus?</p>
<p>wenn ich den Operator ++ audführe springt er erst mal zum letzen (linkesten) Blatt des baumes richtig? und das ist der erste Travesions Wert?</p>
<p>In deinem Beispiel werden so nur die Blätter travesiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316629</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 08:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:00:40 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>ok.. und wies sieht der Konstruktor des Iterators aus?</p>
</blockquote>
<p>Ich würde mal vermuten, daß du erst einmal den Knoten in in der Nachfolgeliste seines Vaters suchen mußt, um deinen Ansatzpunkt zu finden. (oder du initialisierst den Baum-Iterator direkt mit einem list&lt;node&gt;::iterator)</p>
<blockquote>
<p>wenn ich den Operator ++ audführe springt er erst mal zum letzen (linkesten) Blatt des baumes richtig? und das ist der erste Travesions Wert?</p>
</blockquote>
<p>Nein, er springt zum nächst&quot;jüngeren&quot; Bruder des aktuellen Knoten und überprüft dabei, ob dieser existiert (wenn du bei father-&gt;children.end() angekommen bist, gab es keinen jüngeren Bruder). Wenn nicht, arbeitet er sich durch zum Cousin.</p>
<blockquote>
<p>In deinem Beispiel werden so nur die Blätter travesiert?</p>
</blockquote>
<p>Ja. Aber wenn du unbedingt alle Knoten traversieren willst, kannst du das entsprechend anpassen - bei prä-order (erst der Vater, danach alle seine Kinder) lässt du den Abschnitt &quot;nach unten&quot; weg und setzt ein <code>if(!pos-&gt;children.empty()){pos=pos-&gt;children.begin();return *this;}</code> an den Anfang des op++; für post-order (erst die Kinder und zuletzt der Vater) brauchst du statt des Durchhangelns zum Cousin nur rauf zum Vater zu gehen und führst die Schritte 2 und 3 am Anfang des op++ aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316634</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:15:54 GMT]]></title><description><![CDATA[<p>bin immer mehr verwirrt.. du sagst es werden nur die Blätter iteriert (was für mich auch erstmal reicht) aber dann sagst du das er bei der ersten iterationen NICHT zum untersten ,linkesten Blatt springt.. Wiederspruch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>und der father iterator variable im Knoten ist quasie die Postion den Knotens welche im Vaterknoten gesetzt ist?</p>
<p>Konstruktor :</p>
<pre><code class="language-cpp">baum_iterator(node *p) {

		//Vaterknoten Iterator mit Zeiger des Kindknotens verlgeichen und setzen
		for(p-&gt;father = p-&gt;children.begin(); p-&gt;father != p ; p-&gt;father++);
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316642</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:24:34 GMT]]></title><description><![CDATA[<p>Ich fürchte, jetzt hast du es auch geschafft, mich endgültig zu verwirren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Also nochmal langsam:</p>
<p>Wenn du das erste Blatt im Baum als Startpunkt der Iteration verwenden willst, mußt du von der Wurzel bis ganz nach unten durchlaufen.</p>
<p>Wenn du von irgendeinem Blatt zum Nachfolger gehen willst (das macht der op++), kannst du als erstes nachsehen, ob es einen Bruder hat:</p>
<pre><code class="language-cpp">pos_type father=pos-&gt;father;
//'father' ist ein Listen-Iterator, der auf den Vater des aktuellen Knotens zeigt
++pos;
if(pos!=father-&gt;children.end()
  return *this;
</code></pre>
<p>Wenn das nicht geht, mußt du den Umweg gehen:</p>
<pre><code class="language-cpp">//nach oben bis zu einem Onkel
do
{
  pos=father;
  father=pos-&gt;father;
  ++pos;
  if(is_root(pos) return *this;
}
while(pos==father-&gt;children.end());

//nach unten bis zum Blatt
while(!pos-&gt;children.empty())
  pos=pos-&gt;children.begin();

return *this;
</code></pre>
<p>Da mußt du nur noch erkennen, wenn du die Wurzel erreicht hast (dort oben die Funktion is_root()).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316659</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:30:20 GMT]]></title><description><![CDATA[<p>ok gut.. aber der Konstruktor des iterator.. was wird da intialisiert? wenn ich jetzt nicht bei der wurzel beginne zu iterieren.. dann muss da doch sicher was geamcht werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316663</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:35:59 GMT]]></title><description><![CDATA[<p>Was genau übergibst du diesem Ctor? (und von wo aus wird der aufgerufen?)</p>
<p>-&gt; Wenn du ihn verwenden willst, um den begin()-Iterator deines Baums zu besorgen, mußt du dort auch den Weg &quot;nach unten bis zum Blatt&quot; gehen.</p>
<p>-&gt; Wenn du einen Iterator direkt auf den übergebenen (Blatt)Knoten erzeugen willst, mußt du in p-&gt;father.children nach dem übergebenen Knoten suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316670</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:37:51 GMT]]></title><description><![CDATA[<p>und wie wird dann &quot;pos&quot; intialisiert!</p>
<p>naja ich will quasie im C-Tor</p>
<p>iterator(node *pCurNode)......</p>
<p>den Start Knoten übergben.. war da mein Konstruktor im 2t letzen post ok?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316672</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:46:29 GMT]]></title><description><![CDATA[<p>Also pCurNode ist das Blatt, bei dem du mit dem Travarsieren beginnen willst?</p>
<pre><code class="language-cpp">pos=find(pCurNode-&gt;father-&gt;children.begin(),pCurNode-&gt;father-&gt;children.end(),pCurNode);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316678</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:46:29 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:52:39 GMT]]></title><description><![CDATA[<p>pCurNode kann auch ein Ast sein....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1316685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316685</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to @CStoll: Hilfe von deiner Kompetenz (Dynamischer Datenstruktur Baum) on Mon, 02 Jul 2007 09:57:26 GMT]]></title><description><![CDATA[<p>Wenn du irgendwo im Baum bist, mußt du nach unten bis zum ersten Blatt des aktuellen Knoten:</p>
<pre><code class="language-cpp">if(pCurNode-&gt;children.empty())
  //Startpunkt ist Blattknoten
  pos=find(pCurNode-&gt;father-&gt;children.begin(),pCurNode-&gt;father-&gt;children.end(),pCurNode);
else
{
  //Wurzel bzw. mitten im Baum
  pos=pCurNode-&gt;children.begin();
  while(!pos-&gt;children.empty())
    pos=pos-&gt;children.begin();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1316688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1316688</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 02 Jul 2007 09:57:26 GMT</pubDate></item></channel></rss>