<?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[Array in einen Baum umwandeln]]></title><description><![CDATA[<p>Hallo Leute, ich hoffe jemand kann mir helfen.</p>
<p>Also ich habe folgendes Problem: Ich arbeite mit Binärbäumen, die eine boolsche Formel enthalten. D.h: ein Knoten hat entweder zwei oder keine nachfolger - in den blättern stehen die boolschen werte und in den inneren knoten stehen die Operatoren. Das funktioniert auch alles soweit. Jetzt muss ich aber solch einen Baum als Array speichern(das funktioniert auch wunderbar. Habe den Baum inorder durchlaufen und mir damit ein Array erstellt) und an einer anderen Stelle muss ich den umgekehrten Weg gehen, also aus diesem Array einen Baum erstellen, der wiederum die boolsche Formel enthält. Und hier liegt mein Problem. Komme nämlich einfach nicht dahinter wie das gehen soll.<br />
Könnte mir das vielleicht jemand als pseudocode hinschreiben wie das ungefähr aussehen könnte??</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251023/array-in-einen-baum-umwandeln</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 16:05:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251023.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Sep 2009 10:41:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 10:41:04 GMT]]></title><description><![CDATA[<p>Hallo Leute, ich hoffe jemand kann mir helfen.</p>
<p>Also ich habe folgendes Problem: Ich arbeite mit Binärbäumen, die eine boolsche Formel enthalten. D.h: ein Knoten hat entweder zwei oder keine nachfolger - in den blättern stehen die boolschen werte und in den inneren knoten stehen die Operatoren. Das funktioniert auch alles soweit. Jetzt muss ich aber solch einen Baum als Array speichern(das funktioniert auch wunderbar. Habe den Baum inorder durchlaufen und mir damit ein Array erstellt) und an einer anderen Stelle muss ich den umgekehrten Weg gehen, also aus diesem Array einen Baum erstellen, der wiederum die boolsche Formel enthält. Und hier liegt mein Problem. Komme nämlich einfach nicht dahinter wie das gehen soll.<br />
Könnte mir das vielleicht jemand als pseudocode hinschreiben wie das ungefähr aussehen könnte??</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785296</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 10:41:04 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 10:49:22 GMT]]></title><description><![CDATA[<p>Mach doch mal ein kleines Beispiel. Wie sieht das aus, was Du in das Array geschrieben hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785300</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 28 Sep 2009 10:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:05:51 GMT]]></title><description><![CDATA[<p>Baum:</p>
<pre><code class="language-cpp">AND
       /   \
     OR    AND
    / \    /  \
   0   1  1    N1
</code></pre>
<p>Also ich habe mir das so gedacht: ich speichere einen integerarray mit folgenden Werten: NOT = -3<br />
AND = -2<br />
OR = -1<br />
sonst false = 0 und true = 1</p>
<p>damit würde sich hier folgendes Array ergeben:</p>
<p>ARRAY:</p>
<p>{-3, 1, -2, 1, -2, 1, -1, 0}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785305</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:15:29 GMT]]></title><description><![CDATA[<p>Müsste dein Not nicht auch wieder ein Knoten mit zwei Blättern sein anstatt im Blatt zu stehen?</p>
<p>Also:</p>
<pre><code>AND
   /   \
  OR   AND
 / \  /  \
0  1  1  NOT
         / \
        0   1
</code></pre>
<p>Oder Ähnlich?</p>
<p>Und anscheinend hast du das Array von hinten aufgebaut. Inordner beginnt man doch eigentlich Links.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785309</guid><dc:creator><![CDATA[Tolpan]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:24:47 GMT]]></title><description><![CDATA[<p>ups, ja habe ich auch gemacht. habe nur den baum verkehrt rum aufgezeichnet. Und der NOT Operator wird in einem Knoten mitgespeichert. Ein knoten im baum ist entweder ein operatorknoten oder ein blatt, das sowohl den boolschen wert als auch den NOT operator enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785315</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:41:48 GMT]]></title><description><![CDATA[<p>Das mit dem Not im Blatt find ich irgendwie Merkwürdig zumal du das in deinem Array als eigenes Element speicherst. Ich würde also entweder das NOT 1 nach 0 auflösen oder das Not in einen Operatorknoten packen sonst ist das ganze irgendwie inkonsistent und dann ist das mit dem Array parsen auch leichter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785325</guid><dc:creator><![CDATA[Tolpan]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:50:56 GMT]]></title><description><![CDATA[<p>Tolpan schrieb:</p>
<blockquote>
<p>Das mit dem Not im Blatt find ich irgendwie Merkwürdig zumal du das in deinem Array als eigenes Element speicherst. Ich würde also entweder das NOT 1 nach 0 auflösen oder das Not in einen Operatorknoten packen sonst ist das ganze irgendwie inkonsistent und dann ist das mit dem Array parsen auch leichter.</p>
</blockquote>
<p>Das mag komisch aussehen, ist aber wirklich so gewollt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785329</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 11:52:27 GMT]]></title><description><![CDATA[<p>Außerdem sollte &quot;NOT&quot; eigentlich nur einen Subknoten haben, oder eben direkt im Knoten definiert sein, oder eben nicht.<br />
In meinem binären Baum hab ich NOT als logischen Knoten definiert, aber man kann sich das natürlich auch sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785333</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Mon, 28 Sep 2009 11:52:27 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 12:00:30 GMT]]></title><description><![CDATA[<p>Ich versteh die Anordnung der Zahlen im Array nicht. Wenn Du dort auch keine Klammerung bei der infix-Ausgabe einbaust, kannst Du das Array nicht wieder eindeutig in einen Baum konvertieren. Mit Präfix- oder Postfix-Sortierung wird das Aufbaen des Baumes aber ganz einfach (kannst relativ leicht eine rekursive Funktion schreiben).</p>
<p>Beide der folgenden Bäume haben die gleiche Infix-Ausgabe (ohne Klammerung)</p>
<pre><code>AND      OR
  / \      /\
 OR  1    0  AND
 /\          / \
0  1        1   1

infix:  0 OR 1 AND 1  (beide)
präfix: AND OR 0 1 1  (erster Baum)
präfix: OR 0 AND 1 1  (zweiter Baum)
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785342</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 12:17:52 GMT]]></title><description><![CDATA[<p>AHA,<br />
danke für den Hinweis. Also sollte ich schon mal den Baum anders als Array speichern. Dann ändere ich das gleich mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785362</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 12:36:21 GMT]]></title><description><![CDATA[<p>Also ich hab meinen Baum anders gespeichert:</p>
<blockquote>
<p>Knotenummer, Funktionalität ( Blatt oder logische Verknüpfung ), Liste alle Kinder-Knotennummern</p>
</blockquote>
<p>Und das für alle Knoten im Baum. Wobei ich den Kram aber in einer Datei speichere.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785378</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Mon, 28 Sep 2009 12:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 13:32:33 GMT]]></title><description><![CDATA[<p>so, also habe das jetzt so wie beschrieben in prefix als array gespeichert. aber wie komme ich denn nun zurück???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785419</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 13:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 16:11:19 GMT]]></title><description><![CDATA[<p>Siggi198181 schrieb:</p>
<blockquote>
<p>so, also habe das jetzt so wie beschrieben in prefix als array gespeichert. aber wie komme ich denn nun zurück???</p>
</blockquote>
<p>Geht das nicht fast genauso?<br />
Wie sieht denn Dein Pseudoalgorithmus zum Abspeichern aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785533</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 28 Sep 2009 16:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 16:33:17 GMT]]></title><description><![CDATA[<p>also mein code sieht so aus:</p>
<pre><code>//Methode um einen Baum PREFIX als Array zu speichern
//NOT = -3
//AND = -2
//OR = -1
int fillArrayFromTree(int intArray[], node* startNode, int index){

	int rc = index;

	if(startNode-&gt;isLeaf()){
		if(startNode-&gt;getNotOP()){
			intArray[rc] = -3;
			rc++;
		}
		intArray[rc] = startNode-&gt;getIndex();
		rc++;
	}else if(startNode-&gt;getOP() == 0){
		intArray[rc] = -1;
		rc++;
	}else if(startNode-&gt;getOP() == 1){
		intArray[rc] = -2;
		rc++;
	}

	if (startNode-&gt;getLeft() != NULL) {
		rc = fillArrayFromTree(intArray, startNode-&gt;getLeft(), rc);
	}

	if (startNode-&gt;getRight() != NULL) {
		return fillArrayFromTree(intArray, startNode-&gt;getRight(), rc);
	} else {
	return rc;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1785542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785542</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 16:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 16:34:09 GMT]]></title><description><![CDATA[<p>das problem ist ja nun die richtigen beziehungen zu finden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785543</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 16:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 18:53:42 GMT]]></title><description><![CDATA[<p>Ich hätte der Einfachheit und Sicherheit wegen wahrscheinlich einen std::vector&lt;int&gt; per Referenz genommen und die Zahlen per push_back angehängt. Denn so läufst Du ja Gefahr, über das Ende des Arrays hinaus zuschreiben.</p>
<p>Das Aufbauen des Baums geht jetzt aber fast genauso. Pseudo-Code:</p>
<pre><code class="language-cpp">node* aufbauen(int const*&amp; start, int const* const ende)
{
  if (start==end) return 0;
  int elem = *start;
  ++start;
  if (0&lt;=elem &amp;&amp; elem&lt;=1) return Zeiger von neuem Blattknoten;
  if (elem==-3) {
    assert(start != end);
    elem = *start;
    ++start;
    return Zeiger auf neuen Not-Knoten mit &quot;elem&quot; als Wert;
  }
  node* kind1 = aufbauen(start,ende);
  node* kind2 = aufbauen(start,ende);
  return Zeiger auf neuen Bin-Op-Knoten zurückgeben,
         der kind1 und kind2 als Kinder hat;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1785605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785605</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 28 Sep 2009 18:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Mon, 28 Sep 2009 19:48:50 GMT]]></title><description><![CDATA[<p>aber hier wird doch dann links und rechts der gleiche knoten angehängt oder verstehe ich das falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785630</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Mon, 28 Sep 2009 19:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 08:43:01 GMT]]></title><description><![CDATA[<p>Neee, dafür wird start per Referenz übergeben. Innerhalb der Funktion wird start ja verändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785634</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 08:25:29 GMT]]></title><description><![CDATA[<p>OK,</p>
<p>erstmal sorry für die dummen Fragen und schon mal vielen Dank für die Antworten, aber leider ich versteh es noch immer nicht ganz.</p>
<p>Habe da leider doch noch ein paar Fragen, aber prinzipiell funktioniert es auch schon fast. Bei mir funktioniert das mit dem Zeiger verändern noch nicht ganz.</p>
<p>Was bedeuten denn die beiden Übergabeparameter im Funktionsaufruf? Sind das Zeiger auf die Arrayfelder??<br />
Bzw. wie greifst du denn hier überhaupt auf ein einzelnes arrayfeld zu?<br />
und was beudeutet genau: return Zeiger auf neuen Not-Knoten mit &quot;elem&quot; als Wert;<br />
Bedeutet das array[elem] ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785753</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 09:04:23 GMT]]></title><description><![CDATA[<p>Siggi198181 schrieb:</p>
<blockquote>
<p>Was bedeuten denn die beiden Übergabeparameter im Funktionsaufruf? Sind das Zeiger auf die Arrayfelder??</p>
</blockquote>
<p>Ja, das war so gedacht. start zeigt auf das erste Element im Array und ende zeigt hinter das letzte Element.</p>
<pre><code>start           ende
  |               |
  v               v             AND
+---+---+---+---+               / \
|-2 |-3 | 1 | 0 |      ---&gt;   N1   1
+---+---+---+---+
</code></pre>
<p>Das Übergeben einer Sequenz über zwei &quot;Iteratoren&quot; ist ein bekanntes Muster in C++.</p>
<p>Ich empfehle Dir das Thema Arrays und Zeiger zu wiederholen. Beispielsweise sind</p>
<pre><code class="language-cpp">void foo(int t[]);
void foo(int *t);
</code></pre>
<p>äquivalent. t ist jeweils ein Zeiger.</p>
<p>Siggi198181 schrieb:</p>
<blockquote>
<p>Bzw. wie greifst du denn hier überhaupt auf ein einzelnes arrayfeld zu?</p>
</blockquote>
<p>Mit dem Dereferenzierungsoperator (der Stern): <code>*start</code> .</p>
<p>Siggi198181 schrieb:</p>
<blockquote>
<p>und was beudeutet genau: return Zeiger auf neuen Not-Knoten mit &quot;elem&quot; als Wert;<br />
Bedeutet das array[elem] ?</p>
</blockquote>
<p>elem speichert den Wert des Arrayfeldes. Du wolltest ja &quot;NOT&quot; auch zu einem Blattknoten mit irgendeinem Wahrheitswert machen. Der Wahrheitswert wurde aus dem Array ausgelesen und steht jetzt in elem drin. Mit dem obigen Beispiel: elem wird bei einem Funktionsaufruf in Zeile 4 mit -3 initialisiert. Das signalisiert ein &quot;Not-Blatt&quot;. Der Wahrheitswert steht im Array dahinter und wird in Zeile 9 ausgelesen. Nach jedem Lesezugriff wird der Zeiger so verändert, dass er auf das nächste zu lesende Element zeigt.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785776</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 09:04:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 09:55:58 GMT]]></title><description><![CDATA[<p>Eine letzte Frage: Wie komme ich denn an den Zeiger vom ende?</p>
<p>etwa so?</p>
<pre><code class="language-cpp">int *endZeiger = &amp;Zahlen[sizeOfArray];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1785793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785793</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Tue, 29 Sep 2009 09:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 10:02:16 GMT]]></title><description><![CDATA[<p>Siggi198181 schrieb:</p>
<blockquote>
<p>Eine letzte Frage: Wie komme ich denn an den Zeiger vom ende?</p>
</blockquote>
<p>Kommt drauf an, wo Du die Daten speicherst.</p>
<p>Siggi198181 schrieb:</p>
<blockquote>
<p>etwa so?</p>
<pre><code class="language-cpp">int *endZeiger = &amp;Zahlen[sizeOfArray];
</code></pre>
</blockquote>
<p>Nein, nicht ganz. Zahlen[sizeOfArray] würde ja auch das Element hinter dem letzten zugreifen, was nicht erlaubt ist.</p>
<pre><code class="language-cpp">int *endZeiger = &amp;Zahlen[0] + anzahl_der_gueltigen_elemente;
</code></pre>
<p>Falls Zahlen ein Array oder ein nicht leerer std::vector&lt;int&gt; ist.</p>
<p>Hier ist eine Alternative mit std::vector:</p>
<pre><code class="language-cpp">void baum_zu_array(knoten const* wurzel, std::vector&lt;int&gt; &amp; wohin)
{
  if (!wurzel) return;
  ...
  wohin.push_back(wert);
  ...
  if (bin-op-knoten) {
    knoten* kind1 = ...;
    knoten* kind2 = ...;
    if (!kind1 || !kind2) throw std::runtime_error(&quot;darf nicht sein!&quot;);
    baum_zu_array(kind1,wohin);
    baum_zu_array(kind2,wohin);
  }
  ...
}

knoten* array_zu_baum(std::vector&lt;int&gt; const&amp; woher, int &amp; position)
{
  if (woher.size() &lt;= position) return 0;
  int elem = woher[position]; ++position;
  if (elem==0 || elem==1) return Zeiger auf neuen Blattknoten;
  if (elem==-3) {
    elem = woher[position]; ++position;
    assert(elem==0 || elem==1);
    return Zeiger auf neuen Not-Blattknoten;
  }
  knoten* kind1 = array_zu_baum(woher,position);
  knoten* kind2 = array_zu_baum(woher,position);
  if (!kind1 || !kind2) throw std::runtime_error(&quot;zu wenig daten&quot;);
  return Zeiger auf neuen BinOp-Knoten, der kind1/kind2 als Kinder hat.
}

knoten* array_zu_baum(std::vector&lt;int&gt; const&amp; woher)
{
  int pos = 0;
  return array_zu_baum(woher,pos);
}

/// erzeugt eine Kopie des Baumes
knoten* umstaendliches_klonen(knoten* wurzel)
{
  std::vector&lt;int&gt; dings;
  baum_zu_array(wurzel,dings);
  return array_zu_baum(dings);
}
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785805</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 10:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 11:26:11 GMT]]></title><description><![CDATA[<p>so habe das jetzt mal wirklich genauso gemacht wie du es beschrieben hast. und die methode wird vom kompiler korrekt übersetzt und es erscheinen keine fehlermeldungen. Also scheint es so als ob alles korrekt sei. Allerdings frage ich mich wie ich das jetzt aufrufe.<br />
denn mich verwirrt</p>
<pre><code class="language-cpp">int const*&amp; start
</code></pre>
<p>ich dachte eigentlich dass es so ist:</p>
<pre><code class="language-cpp">int* begin = meinArray;
int* end = &amp;meinArray[0]+(sizeOfArray-1);
node* root = aufbauen(begin, end);
</code></pre>
<p>dies geht aber wiederum nicht <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1785858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785858</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Tue, 29 Sep 2009 11:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 11:39:00 GMT]]></title><description><![CDATA[<p>Was ist meinArray und was ist sizeOfArray?</p>
<p>Bei</p>
<pre><code class="language-cpp">int const*&amp; start
</code></pre>
<p>handelt es sich um eine Referenz auf einen Zeiger auf <code>int const</code> .</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785869</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 11:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 11:48:30 GMT]]></title><description><![CDATA[<p>in meinArray ist quasi der Baum gespeichert. Also ist</p>
<pre><code class="language-cpp">int* begin = meinArray;
</code></pre>
<p>doch der Zeiger auf das erste Element in meinem Array.<br />
Und SizeOfMyArray ist quasi die Anzahl meiner Felder im Array. Also ist das doch quasi der Zeiger auf das Ende des Array.<br />
Andererseits könnte ich doch das auch so machen, dass ich sage das Ende des arrays ist das letzte Element des Arrays. Und am Ende des Arrays ist ja eigentlich immer ein boolscher knoten gespeichert. damit müsste ich nicht über das ende des arrays hinauslaufen.<br />
Also könnte ich das folgendermaßen machen:</p>
<pre><code class="language-cpp">if(start == end) return new node(elem);
</code></pre>
<p>Und dadurch dass ich im konstruktor die nachfolger auf NULL setze, dürfte da doch nichts passieren.</p>
<p>Die eigentliche Frage ist ja aber wie denn der Aufruf der Methode dann aber wäre. Auf jeden Fall mal nicht so wie ich es oben beschrieben habe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785876</guid><dc:creator><![CDATA[Siggi198181]]></dc:creator><pubDate>Tue, 29 Sep 2009 11:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array in einen Baum umwandeln on Tue, 29 Sep 2009 12:12:30 GMT]]></title><description><![CDATA[<p>Siggi198181 schrieb:</p>
<blockquote>
<p>in meinArray ist quasi der Baum gespeichert.</p>
</blockquote>
<p>Das war mir klar. Ich wollte aber den genauen Typ wissen und woher der Wert für sizeOfArray kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785891</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 12:12:30 GMT</pubDate></item></channel></rss>