<?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[Frage zur Rekursion in Binär-Bäumen]]></title><description><![CDATA[<p>In diversen C++ Tutorials habe ich gelesen, dass Rekursion also Methoden die sich selbst aufrufen ineffizient sind und schnell zu einem Stackoverflow führen. Ich habe nun für eine Binärbaum eine Funktion geschrien (coutall()) die alle Daten des Baumes auf der Konsole ausgibt.</p>
<pre><code class="language-cpp">#ifndef __tree__hpp__
#define __tree__hpp__

#include &lt;iostream&gt;
using namespace std;

#define coutl (cout &lt;&lt; endl)

struct tree
{
    	tree *lnext;
    	tree *rnext;
    	int data;

    	tree(int ndata)
    	{
    		lnext = 0;
    		rnext = 0;
    		data = ndata;
    	}

	~tree()
    	{
    		delete lnext;
    		lnext = 0;
    		delete rnext;
    		rnext = 0;
    		delete &amp;data;
    	}

    	void coutall()
    	{
    		coutl &lt;&lt; data;
    		if(lnext != 0)
    		{
    			lnext-&gt;coutall();
    		}
		if(rnext != 0)
    		{
    			rnext-&gt;coutall();
    		}
    	}

};

#endif
</code></pre>
<p>Meine Frage ist nun ob die Funtion coutall() zu einem Stackoverflow führen kann (sie hat keinen Rückgabewert), bzw. wie effizient sie ist.</p>
<p>Tut mir leid wenn der Code nicht richtig formatiert ist, ist irgendwie nicht gegangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281987/frage-zur-rekursion-in-binär-bäumen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 10:34:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281987.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Feb 2011 15:28:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Rekursion in Binär-Bäumen on Fri, 11 Feb 2011 15:28:00 GMT]]></title><description><![CDATA[<p>In diversen C++ Tutorials habe ich gelesen, dass Rekursion also Methoden die sich selbst aufrufen ineffizient sind und schnell zu einem Stackoverflow führen. Ich habe nun für eine Binärbaum eine Funktion geschrien (coutall()) die alle Daten des Baumes auf der Konsole ausgibt.</p>
<pre><code class="language-cpp">#ifndef __tree__hpp__
#define __tree__hpp__

#include &lt;iostream&gt;
using namespace std;

#define coutl (cout &lt;&lt; endl)

struct tree
{
    	tree *lnext;
    	tree *rnext;
    	int data;

    	tree(int ndata)
    	{
    		lnext = 0;
    		rnext = 0;
    		data = ndata;
    	}

	~tree()
    	{
    		delete lnext;
    		lnext = 0;
    		delete rnext;
    		rnext = 0;
    		delete &amp;data;
    	}

    	void coutall()
    	{
    		coutl &lt;&lt; data;
    		if(lnext != 0)
    		{
    			lnext-&gt;coutall();
    		}
		if(rnext != 0)
    		{
    			rnext-&gt;coutall();
    		}
    	}

};

#endif
</code></pre>
<p>Meine Frage ist nun ob die Funtion coutall() zu einem Stackoverflow führen kann (sie hat keinen Rückgabewert), bzw. wie effizient sie ist.</p>
<p>Tut mir leid wenn der Code nicht richtig formatiert ist, ist irgendwie nicht gegangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019724</guid><dc:creator><![CDATA[dummenuss123]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Rekursion in Binär-Bäumen on Fri, 11 Feb 2011 15:36:56 GMT]]></title><description><![CDATA[<ol>
<li>Klar kann die Funktion zu einem Stackoverflow führen.</li>
<li>Definiere &quot;effizient&quot; und ich kann dir sagen, ob sie es ist <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="😉"
    /></li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2019732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019732</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Rekursion in Binär-Bäumen on Fri, 11 Feb 2011 15:37:34 GMT]]></title><description><![CDATA[<p>Klar kann sie das, wenn der Baum genügend Hoch ist.</p>
<p>Das kannst du selber herausfinden, indem du es einfach probierst. Und dann hättest du auch gemerkt, dass das hier:</p>
<pre><code class="language-cpp">delete &amp;data;
</code></pre>
<p>einfach nur Mist ist.</p>
<p>Bei Bäumen (die nicht entartet sind) ist die Rekursion meistens aber nicht so ein riesen Problem, weil ein Pfad sowieso maximal nur log(n) lang wird.</p>
<p>Man kann das natürlich aber auch als Schleife ganz gut iterativ machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019734</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 11 Feb 2011 15:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Rekursion in Binär-Bäumen on Fri, 11 Feb 2011 16:23:29 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnellen Antworten.<br />
Ich werde die Ausgabe jetzt iterativ lösen.<br />
Das mit dem delete &amp;data; tut mir leid. Ich weiß, dass man delete nur dann einsetzen soll wenn man new verwendet hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2019761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2019761</guid><dc:creator><![CDATA[dummenuss123]]></dc:creator><pubDate>Fri, 11 Feb 2011 16:23:29 GMT</pubDate></item></channel></rss>