<?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[Binärer Suchbaum + Preorder]]></title><description><![CDATA[<p>Hallihallo CPP-Gemeinde,</p>
<p>Bin schon seit 2 Tagen an einem Projekt, einen binären Suchbaum<br />
zu programmieren. Habe mir eigentlich vorgenommen, dass komplett<br />
alleine durchzukauen, aber bei diesem Problem fehlt bei mir einfach<br />
das logische Verständnis.</p>
<p>Was ich vorher so hatte:</p>
<pre><code class="language-cpp">//-------------------------Suche Einfuege-Position-----------------------
void Tree::search_position(int pos)
{
       do                                       //  mache...
       {
         if (pos &lt; root-&gt;data)                  // ist wert kleiner
         {                                      // als wurzeldaten?

              if (root-&gt;left_son != NULL)       // hat linker Sohn nachfolger?
              {
                 root = root-&gt;left_son;         // NachfolgerL wird neue Wurzel
              }
         }
         else
         {
              if (root-&gt;right_son != NULL)      // hat rechter Sohn nachfolger?
              {
                 root = root-&gt;right_son;        // NachfolgerR wird neue Wurzel
              }
         }
       }while((isempty()));                     // ... bis Wurzel leer ist
};
//-----------------------------Neuen Wert hinzufuegen--------------------
bool Tree::newleaf(int wert)
{
  treestructure *tmp;
  if (tmp = new treestructure)                  // Abfrage1: Konnte neues Blatt
  {                                             // erstellt werden?

     if (isempty())                             //  Abfrage2: Ist Wurzel leer?
     {
        root-&gt;data = wert;                      //   dann besetze Wurzel
     }                                          //   mit dem neuen Wert
     else
     {
       Tree::search_position(wert);             //   führe Positionssuche durch

       if (wert &lt; root-&gt;data)
       {
          root-&gt;left_son = tmp;                // linker Sohn wird tmp
       }
       else
       {
          root-&gt;right_son = tmp;               // rechter Sohn wird tmp
       }

       tmp-&gt;data = wert;                    // tmp mit neuem Wert versehen
       tmp-&gt;parent = root;                  // papa von tmp ist Wurzel
       tmp-&gt;left_son = NULL;                // Setze beide Soehne
       tmp-&gt;right_son = NULL;               // auf NULL
       root = tmp;                          // tmp wird neue Wurzel
       jumptofirst();                       // Springe an den Urpsrung
     }
     return true;
  }
  else
  {
     return false;
  }
};
</code></pre>
<p>Soll nun rekursiv erfolgen. Alles kein Problem, wenn ich das Post-Order-Verfahren machen würde. Aber unser Professor meinte wir sollten das mal mit Pre-Order-Verfahren durchführen.</p>
<p>Habt ihr ne Ahnung ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203558/binärer-suchbaum-preorder</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 14:02:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203558.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jan 2008 20:18:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binärer Suchbaum + Preorder on Wed, 23 Jan 2008 20:32:40 GMT]]></title><description><![CDATA[<p>Hallihallo CPP-Gemeinde,</p>
<p>Bin schon seit 2 Tagen an einem Projekt, einen binären Suchbaum<br />
zu programmieren. Habe mir eigentlich vorgenommen, dass komplett<br />
alleine durchzukauen, aber bei diesem Problem fehlt bei mir einfach<br />
das logische Verständnis.</p>
<p>Was ich vorher so hatte:</p>
<pre><code class="language-cpp">//-------------------------Suche Einfuege-Position-----------------------
void Tree::search_position(int pos)
{
       do                                       //  mache...
       {
         if (pos &lt; root-&gt;data)                  // ist wert kleiner
         {                                      // als wurzeldaten?

              if (root-&gt;left_son != NULL)       // hat linker Sohn nachfolger?
              {
                 root = root-&gt;left_son;         // NachfolgerL wird neue Wurzel
              }
         }
         else
         {
              if (root-&gt;right_son != NULL)      // hat rechter Sohn nachfolger?
              {
                 root = root-&gt;right_son;        // NachfolgerR wird neue Wurzel
              }
         }
       }while((isempty()));                     // ... bis Wurzel leer ist
};
//-----------------------------Neuen Wert hinzufuegen--------------------
bool Tree::newleaf(int wert)
{
  treestructure *tmp;
  if (tmp = new treestructure)                  // Abfrage1: Konnte neues Blatt
  {                                             // erstellt werden?

     if (isempty())                             //  Abfrage2: Ist Wurzel leer?
     {
        root-&gt;data = wert;                      //   dann besetze Wurzel
     }                                          //   mit dem neuen Wert
     else
     {
       Tree::search_position(wert);             //   führe Positionssuche durch

       if (wert &lt; root-&gt;data)
       {
          root-&gt;left_son = tmp;                // linker Sohn wird tmp
       }
       else
       {
          root-&gt;right_son = tmp;               // rechter Sohn wird tmp
       }

       tmp-&gt;data = wert;                    // tmp mit neuem Wert versehen
       tmp-&gt;parent = root;                  // papa von tmp ist Wurzel
       tmp-&gt;left_son = NULL;                // Setze beide Soehne
       tmp-&gt;right_son = NULL;               // auf NULL
       root = tmp;                          // tmp wird neue Wurzel
       jumptofirst();                       // Springe an den Urpsrung
     }
     return true;
  }
  else
  {
     return false;
  }
};
</code></pre>
<p>Soll nun rekursiv erfolgen. Alles kein Problem, wenn ich das Post-Order-Verfahren machen würde. Aber unser Professor meinte wir sollten das mal mit Pre-Order-Verfahren durchführen.</p>
<p>Habt ihr ne Ahnung ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442332</guid><dc:creator><![CDATA[Quellcode]]></dc:creator><pubDate>Wed, 23 Jan 2008 20:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Suchbaum + Preorder on Wed, 23 Jan 2008 20:34:46 GMT]]></title><description><![CDATA[<p>Also Post-Order würde ich das so machen:</p>
<pre><code class="language-cpp">void postorder_anfuegen(treestructure *tree, int wert)
{
  if (wert &lt; tree-&gt;data)
  {
    if (tree-&gt;left != NULL)
    {
      postorder_anfuegen(tree-&gt;left, int wert);
    }
  }
  else 
  {
    if (tree-&gt;right != NULL)
    {
      postorder_anfuegen(tree-&gt;right, int wert);
    }
  }
  ja und hier eben dann eben element anfuegen je nachdem ob größer oder kleiner
}
</code></pre>
<p>aber wie soll ich das in preorder umwandeln ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442345</guid><dc:creator><![CDATA[Quellcode]]></dc:creator><pubDate>Wed, 23 Jan 2008 20:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Binärer Suchbaum + Preorder on Wed, 23 Jan 2008 20:37:04 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Tree_traversal" rel="nofollow">Wiki weiß alles.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442351</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Wed, 23 Jan 2008 20:37:04 GMT</pubDate></item></channel></rss>