<?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[Binary Tree mit std::unique_ptr]]></title><description><![CDATA[<p>Ich habe eine Frage bezüglich dem Design eines Binary Trees, in dem an jedem Knoten ein Datensatz vom Typ T und ein Key vom Typ K gespeichert wird. Wie man den mit rohen Zeigern implementiert ist mir klar. Wenn ich nun statt rohen Zeigern <code>std::unique_ptr</code> verwende bin ich mir nicht ganz sicher ob mein Design gut ist.</p>
<p>Mich stört es z.B., dass ich in Zeile 24 die get() Funktion brauche und ich trotzdem wieder mit rohen Pointern arbeite. Auf der anderen Seite sind das aber keine &quot;owning&quot; Pointer, soweit ich weiss ist es in Ordnung dies zu machen?</p>
<p>Ist es eurer Meinung nach hier überhaupt sinnvoll <code>std::unique_ptr</code> zu verwenden? Ich habe Implementierung, die <code>std::shared_ptr</code> verwenden gefunden. Ich finde <code>std::shared_ptr</code> hier allerdings nicht sinnvoll.</p>
<p>Ich wäre froh, wenn mir jemand ein Feedback zum Design geben könnte (die Implementierung von insert habe ich nur kurz hingeschrieben um zu zeigen, wie ich mit den Pointern umgehe, die ist weder fertig noch genauer durchdacht, es geht mir nur konzeptuell darum <code>std::unique_ptr</code> richtig zu verwenden <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="😉"
    /> ) Ansonsten nicht mit Kritik sparen <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>
<p>Hier der Code:</p>
<pre><code>template &lt;typename T, typename K&gt;
struct Node
{
    Node(T d, K k) : data(d), key(k) { }

    T data;
    K key;
    std::unique_ptr&lt;Node&gt; left;
    std::unique_ptr&lt;Node&gt; right;
};

template &lt;typename T, typename K&gt;
class BinTree
{
public:
    void insert(T t, K key);
private:
    std::unique_ptr&lt;Node&lt;T,K&gt;&gt; root;
};

template &lt;typename T, typename K&gt;
void BinTree&lt;T,K&gt;::insert(T t, K key)
{
	Node&lt;T,K&gt; *current = root.get();
	if ( !current )
	{
		root.reset(new Node&lt;T,K&gt;(t,key));
		return;
	}

	while ( true )
	{
		if ( key &lt; current-&gt;key &amp;&amp; !current-&gt;left )
		{
			current-&gt;left.reset(new Node&lt;T,K&gt;(t,key));
			return;
		}
		else if ( current-&gt;key &lt; key &amp;&amp; !current-&gt;right )
		{
			current-&gt;right.reset(new Node&lt;T,K&gt;(t,key));
			return;
		}

		current = key &lt; current-&gt;key ? current-&gt;left.get() : current-&gt;right.get();
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/323607/binary-tree-mit-std-unique_ptr</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:16:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323607.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Feb 2014 18:41:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 18:41:58 GMT]]></title><description><![CDATA[<p>Ich habe eine Frage bezüglich dem Design eines Binary Trees, in dem an jedem Knoten ein Datensatz vom Typ T und ein Key vom Typ K gespeichert wird. Wie man den mit rohen Zeigern implementiert ist mir klar. Wenn ich nun statt rohen Zeigern <code>std::unique_ptr</code> verwende bin ich mir nicht ganz sicher ob mein Design gut ist.</p>
<p>Mich stört es z.B., dass ich in Zeile 24 die get() Funktion brauche und ich trotzdem wieder mit rohen Pointern arbeite. Auf der anderen Seite sind das aber keine &quot;owning&quot; Pointer, soweit ich weiss ist es in Ordnung dies zu machen?</p>
<p>Ist es eurer Meinung nach hier überhaupt sinnvoll <code>std::unique_ptr</code> zu verwenden? Ich habe Implementierung, die <code>std::shared_ptr</code> verwenden gefunden. Ich finde <code>std::shared_ptr</code> hier allerdings nicht sinnvoll.</p>
<p>Ich wäre froh, wenn mir jemand ein Feedback zum Design geben könnte (die Implementierung von insert habe ich nur kurz hingeschrieben um zu zeigen, wie ich mit den Pointern umgehe, die ist weder fertig noch genauer durchdacht, es geht mir nur konzeptuell darum <code>std::unique_ptr</code> richtig zu verwenden <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="😉"
    /> ) Ansonsten nicht mit Kritik sparen <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>
<p>Hier der Code:</p>
<pre><code>template &lt;typename T, typename K&gt;
struct Node
{
    Node(T d, K k) : data(d), key(k) { }

    T data;
    K key;
    std::unique_ptr&lt;Node&gt; left;
    std::unique_ptr&lt;Node&gt; right;
};

template &lt;typename T, typename K&gt;
class BinTree
{
public:
    void insert(T t, K key);
private:
    std::unique_ptr&lt;Node&lt;T,K&gt;&gt; root;
};

template &lt;typename T, typename K&gt;
void BinTree&lt;T,K&gt;::insert(T t, K key)
{
	Node&lt;T,K&gt; *current = root.get();
	if ( !current )
	{
		root.reset(new Node&lt;T,K&gt;(t,key));
		return;
	}

	while ( true )
	{
		if ( key &lt; current-&gt;key &amp;&amp; !current-&gt;left )
		{
			current-&gt;left.reset(new Node&lt;T,K&gt;(t,key));
			return;
		}
		else if ( current-&gt;key &lt; key &amp;&amp; !current-&gt;right )
		{
			current-&gt;right.reset(new Node&lt;T,K&gt;(t,key));
			return;
		}

		current = key &lt; current-&gt;key ? current-&gt;left.get() : current-&gt;right.get();
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2381913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381913</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 06 Feb 2014 18:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 19:09:22 GMT]]></title><description><![CDATA[<p>es sollte auch so funktionieren:</p>
<pre><code>if ( !root )
{
    root.reset(new Node&lt;T,K&gt;(t,key));
    return;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2381916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381916</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Thu, 06 Feb 2014 19:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 19:21:44 GMT]]></title><description><![CDATA[<p>firefly schrieb:</p>
<blockquote>
<p>es sollte auch so funktionieren:</p>
<pre><code>if ( !root )
{
    root.reset(new Node&lt;T,K&gt;(t,key));
    return;
}
</code></pre>
</blockquote>
<p>Ja, aber was wenn <code>root != nullptr</code> ? Dann muss ich mit <code>left</code> oder <code>right</code> weitermachen und spätestens dann brauche ich einen rohen Zeiger (siehe while-Schleife).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381921</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 06 Feb 2014 19:21:44 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 19:31:06 GMT]]></title><description><![CDATA[<p>An nicht besitzenden rohen Zeigern ist nichts falsch. Wobei ich hier einen Zeiger auf einen unique_ptr genommen hätte.</p>
<pre><code class="language-cpp">template &lt;typename T, typename K&gt;
void BinTree&lt;T,K&gt;::insert(T t, K key)
{
    auto *current = &amp;root;
    while ( current )
    {
        if ( key &lt; (*current)-&gt;key )
            current = &amp;(*current)-&gt;left;
        else if ( (*current)-&gt;key &lt; key )
            current = &amp;(*current)-&gt;right;
    }
    *current = make_unique&lt;Node&lt;T,K&gt; &gt;(t,key);
}
</code></pre>
<p>Der Algorithmus schreit aber danach, rekursiv implementiert zu werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381924</guid><dc:creator><![CDATA[rohzeiger]]></dc:creator><pubDate>Thu, 06 Feb 2014 19:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 19:37:35 GMT]]></title><description><![CDATA[<p>rohzeiger schrieb:</p>
<blockquote>
<p>Wobei ich hier einen Zeiger auf einen unique_ptr genommen hätte.</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="👍"
    /> Da hätte ich selber drauf kommen sollen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>rohzeiger schrieb:</p>
<blockquote>
<p>Der Algorithmus schreit aber danach, rekursiv implementiert zu werden.</p>
</blockquote>
<p>Ja, aber rekursiv ist halt meistens langsamer als iterativ. Auf der anderen Seite nimmt man aber auch keinen Binären Baum (ohne Balancierung etc.), wenn man eine schnelle Datenstruktur will <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>
<p>Danke für den Tipp!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381927</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Thu, 06 Feb 2014 19:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Thu, 06 Feb 2014 20:13:18 GMT]]></title><description><![CDATA[<p>Man kann bestimmt mit swap was machen.</p>
<pre><code>void BinTree&lt;T,K&gt;::insert(T t, K key){
    auto newNode = make_unique&lt;Node&lt;T,K&gt;&gt;(t, key);
    Node&lt;T,K&gt; *current = root.get();
    if (!current){
        swap(root, newNode);
        return;
    }

    while (true){
        if (key &lt; current-&gt;key &amp;&amp; !current-&gt;left){
            swap(current-&gt;left, newNode);
            return;
        }
        else if (current-&gt;key &lt; key &amp;&amp; !current-&gt;right){
            swap(current-&gt;right, newNode);
            return;
        }
        current = key &lt; current-&gt;key ? current-&gt;left.get() : current-&gt;right.get();
    }
}
</code></pre>
<p>Zumindest das Balancing und Löschen wird damit bestimmt weniger umständlich, bei insert kommt der Vorteil nicht so richtig raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381932</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 06 Feb 2014 20:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 09:01:15 GMT]]></title><description><![CDATA[<p>rohzeiger schrieb:</p>
<blockquote>
<p>Der Algorithmus schreit aber danach, rekursiv implementiert zu werden.</p>
</blockquote>
<p>Nein. Er hat sogar ziemlich viel Angst davor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381970</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 07 Feb 2014 09:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 09:19:03 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>rohzeiger schrieb:</p>
<blockquote>
<p>Der Algorithmus schreit aber danach, rekursiv implementiert zu werden.</p>
</blockquote>
<p>Nein. Er hat sogar ziemlich viel Angst davor.</p>
</blockquote>
<p>Ohne Begründung ist die Aussage nix wert...</p>
<p>Wieso sollte eine rekursive Implementierung schlechter sein als die iterative?<br />
Weil in jedem Rekursionsschritt eine temporäre Variable erzeugt wird?<br />
Weil der Stack durch zu viele Rekursionsschritte schnell voll wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381973</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 07 Feb 2014 09:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 09:38:11 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>rohzeiger schrieb:</p>
<blockquote>
<p>Der Algorithmus schreit aber danach, rekursiv implementiert zu werden.</p>
</blockquote>
<p>Nein. Er hat sogar ziemlich viel Angst davor.</p>
</blockquote>
<p>Ohne Begründung ist die Aussage nix wert...</p>
</blockquote>
<p>rohzeiger hatte auc nix begründet.</p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Wieso sollte eine rekursive Implementierung schlechter sein als die iterative?<br />
Weil in jedem Rekursionsschritt eine temporäre Variable erzeugt wird?<br />
Weil der Stack durch zu viele Rekursionsschritte schnell voll wird?</p>
</blockquote>
<p>Ah, Du kennst die Antwort ja schon. Noch war nämlich noch keine Rede vom ausbalancieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381978</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 07 Feb 2014 09:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 09:55:00 GMT]]></title><description><![CDATA[<p>Naja, für Rekursion spricht die Einfachheit des Algorithmus'. Eine Baumtraversierung oder Suche ist rekursiv implementiert nicht mehr als 'n kompakter Dreizeiler.</p>
<p>Iterativ sind das mehr als 5 <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="😉"
    /> <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="😃"
    /></p>
<p>Ok, wenn man von einem unbalanciertem Baum ausgeht, der ordentlich voll wird, dann kann der Stack schonmal voll werden.</p>
<p>Aber OP will den Umgang mit unique_ptr lernen und implementiert den Baum nur zur Übung. Da wäre Rekursion intuitiv durchaus nachvollziehbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381980</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 07 Feb 2014 09:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 10:13:28 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Wieso sollte eine rekursive Implementierung schlechter sein als die iterative?<br />
Weil in jedem Rekursionsschritt eine temporäre Variable erzeugt wird?<br />
Weil der Stack durch zu viele Rekursionsschritte schnell voll wird?</p>
</blockquote>
<p>Ah, Du kennst die Antwort ja schon. Noch war nämlich noch keine Rede vom ausbalancieren.</p>
</blockquote>
<p>Also mein Compiler erkennt, dass das tailrekursiv ist.</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct bintree {
  struct node {
    node(T key) : key(key) {}
    T key;
    std::unique_ptr&lt;node&gt; left, right;

    void insert(T x) {
      if (x &lt; key)
        if (left)
          left-&gt;insert(x);
        else
          left = make_unique&lt;node&gt;(x);
      else
        if (right)
          right-&gt;insert(x);
        else
          right = make_unique&lt;node&gt;(x);
    }
  };
  std::unique_ptr&lt;node&gt; root;

  void insert(T key) {
    if (root)
      root-&gt;insert(key);
    else
      root = make_unique&lt;node&gt;(key);
  }
};
</code></pre>
<p>Und ganz allgemein ist bei Bäumen ist rekursiv die verständlichste Art, daher sehe ich keinen Grund, das anders zu machen ausser man hat einen gutes Argument.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381983</guid><dc:creator><![CDATA[rohzeiger]]></dc:creator><pubDate>Fri, 07 Feb 2014 10:13:28 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 10:49:01 GMT]]></title><description><![CDATA[<p>rohzeiger schrieb:</p>
<blockquote>
<p>Also mein Compiler erkennt, dass das tailrekursiv ist.</p>
</blockquote>
<p>Würde mich ungern davon abhängig machen. Also will nicht, daß es vom Optimieren abhängt, ob das Programm überhaupt läuft. Ich will auch nicht riskieren, daß nach jeder kleinen Codeänderung vielleicht der Optimierer die Endrekursion nicht mehr erkennt.</p>
<p>rohzeiger schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt;
    void insert(T x) {
      if (x &lt; key)
        if (left)
          left-&gt;insert(x);
        else
          left = make_unique&lt;node&gt;(x);
      else
        if (right)
          right-&gt;insert(x);
        else
          right = make_unique&lt;node&gt;(x);
    }
  };
  void insert(T key) {
    if (root)
      root-&gt;insert(key);
    else
      root = make_unique&lt;node&gt;(key);
  }
};
</code></pre>
</blockquote>
<p>rohzeiger schrieb:</p>
<blockquote>
<pre><code>template &lt;typename T, typename K&gt;
void BinTree&lt;T,K&gt;::insert(T t, K key)
{
    auto *current = &amp;root;
    while ( current ) //oder ähnlich
    {
        if ( key &lt; (*current)-&gt;key )
            current = &amp;(*current)-&gt;left;
        else if ( (*current)-&gt;key &lt; key )
            current = &amp;(*current)-&gt;right;
    }
    *current = make_unique&lt;Node&lt;T,K&gt; &gt;(t,key);
}
</code></pre>
</blockquote>
<p>Aha. Das ist jetzt aber seltsam. Ist iterativ am Ende doch einfacher? Oh, das darf nicht sein. Jetzt müssen wir schnell eine tolle Begründung finden.<br />
Ach, übrigens, Du hast rekursiv die Funktion in zwei kleinere zerhackt. Sollte man faiererweise iterativ auch machen. Eine, die den Zeiger auf die Kante sicht, wo der neue Knoten drangemacht werden würde, und eine, die dann schlicht dranmacht. Keine Sonderbahenadling des ersten Knotens mehr und diese Suchfunktion kann auch für find() mitverwendet werden.</p>
<p>rohzeiger schrieb:</p>
<blockquote>
<p>Und ganz allgemein ist bei Bäumen ist rekursiv die verständlichste Art,</p>
</blockquote>
<p>Das ist ja wohl mal <strong>Oberquatsch</strong>. Dir fallen offenbar beide Versionen recht leicht. Du postulierst also wohl, was Du meinst, was für einen hypothetischen Anfänger wohl am verständlichsten wäre. Und ich sage, daß die Anfänger gar nicht behindert sind.</p>
<p>rohzeiger schrieb:</p>
<blockquote>
<p>daher sehe ich keinen Grund, das anders zu machen ausser man hat einen gutes Argument.</p>
</blockquote>
<p>Ich sehe generell keinen Grund, etwas rekursiv zu machen, außer man hat einen guten Grund. Ein guter Grund dafür ist, daß das Problem schon rekursiv gegeben ist und es keine triviale iterative Implementierung gibt (Parser). Nicht aber der Baum, obwohl man ihn, als rekursiv definiert auffassen könnte, wenn die iterative Version doch so nah ist. Ein guter Grund dagegen ist, wenn die Rekursionstiefe nicht wenigstens logarithmisch beschränkt ist (Anfänger-Lehrbuch-Quicksort).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381987</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 07 Feb 2014 10:49:01 GMT</pubDate></item><item><title><![CDATA[Reply to Binary Tree mit std::unique_ptr on Fri, 07 Feb 2014 10:59:00 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Naja, für Rekursion spricht die Einfachheit des Algorithmus'.</p>
</blockquote>
<p>Ja, WENN die Rekursive Version deutlich einfacher ist.</p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Eine Baumtraversierung oder Suche ist rekursiv implementiert nicht mehr als 'n kompakter Dreizeiler.</p>
</blockquote>
<p>Bei der Traversierung gebe ich Dir recht, daß die iterativ nicht hübsch ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2381990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2381990</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 07 Feb 2014 10:59:00 GMT</pubDate></item></channel></rss>