AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Binärbaum Iterativ ausgeben

Ein Thema von Newbie44 · begonnen am 18. Mai 2008
Antwort Antwort
Newbie44
(Gast)

n/a Beiträge
 
#1

[C++] Binärbaum Iterativ ausgeben

  Alt 18. Mai 2008, 14:57
Hallo,

ich hab mir folgenden Code geschrieben:

Code:
#include <iostream>

template <typename T>
class Node
{
private:
   T value;

   Node* smaller;
   Node* equal;
   Node* larger;

public:
   Node(const T& a) : value(a), smaller(0), equal(0), larger(0)
   {
   }   
   virtual ~Node()
   {
      if (smaller)
         delete smaller;
      if (equal)
         delete equal;
      if (larger)
         delete larger;
   }

   void insert(const T& a)
   {
      if (a < value)
      {
         if (!smaller)
            smaller = new Node(a);
         else
            smaller->insert(a);
      }
      else if (a == value)
      {
         if (!equal)
            equal = new Node(a);
         else
            equal->insert(a);
      }
      else
      {
         if (!larger)
            larger = new Node(a);
         else
            larger->insert(a);
      }
   }
   void print()
   {
      if (smaller)
         smaller->print();
      if (equal)
         equal->print();
      std::cout << " " << value << " "<< this << std::endl;
      if (larger)
         larger->print();
   }
};

template <typename T>
class Tree
{
private:   
   Node<T>* root;

public:
   Tree() : root(0)
   {
   }
   virtual ~Tree()
   {
      if (root)
         delete root;
   }

   void insert(const T& a)
   {
      if (root)
         root->insert(a);
      else
         root = new Node<T>(a);
   }
   void print()
   {
      if (root)
      {
         root->print();
         std::cout << std::endl;
      }
      else
         std::cout << "<empty>" << std::endl;
   }
};

int main(int argc, char* argv[])
{
   Tree<std::string> tree;

   tree.insert("schedl");
   tree.insert("beck");
   tree.insert("knackfuß");
   tree.insert("geier");
   tree.insert("nierlein");
   tree.insert("kiendl");

   tree.print();
   system("pause");
}
Ich hab jetzt nur ein Problem. Ich will Ihn jetzt Iterativ ausgeben. Rekursiv war das ganze ja nicht schwer, jedoch kann das ja Stacküberlauf hervorrufen.

Könnt Ihr mir dabei bitte helfen? Mein Problem ist das Lexigrafische ausgeben, ich geh ja in der rekursion immer erst links, dann geradeaus und dann rechts also (kleiner, gleich, größer)

wie mach ich das mit einer for-schleife? Ich steh im moment auf dem schlauch

gruß und danke für eure hilfe im voraus

Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz