![]() |
[C++] Binärbaum Iterativ ausgeben
Hallo,
ich hab mir folgenden Code geschrieben:
Code:
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.
#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"); } 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz