Može ovako:
Code (cpp):
#include <iostream>
#include <string>
using namespace std;
class Node
{
Node *left, *right;
string data;
public:
Node(const string &data)
{
this->data = data;
left = right = 0;
}
Node(const string &data, Node *left, Node *right)
{
this->data = data;
this->left = left;
this->right = right;
}
~Node()
{
delete left;
delete right;
}
friend void write(const Node*, ostream&, size_t);
};
typedef Node *Tree;
void write(const Node *tree, ostream &out, size_t space = 0)
{
if (tree == 0) {
out << endl;
return;
}
write(tree->left, out, space + tree->data.size());
write(tree->right, out, space + tree->data.size());
for (size_t i = 0; i < space; ++i) {
out << " ";
}
out << tree->data << endl;
}
ostream& operator<<(ostream &out, const Node *tree)
{
write(tree, out);
return out;
}
int main()
{
string data("SUPERPROGRAMERI");
Tree tree = new Node(data,
new Node(data,
new Node(data),
new Node(data)),
new Node(data,
new Node(data),
new Node(data)));
cout << tree << endl;
delete tree;
return 0;
}
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.