[ create a new paste ] login | about

Link: http://codepad.org/d6uaNtuU    [ raw code | output | fork ]

C++, pasted on May 10:
#include <iostream>

using namespace std;

class Tree {
public:
  Tree();
  Tree(int data);
  ~Tree();
  void add(int data);
  int getData();
  int maximumElement();
  int minimumElement();
  void printMaximumElements();
  void printMinimumElements();
protected:
private:
  int data;
  Tree *right;
  Tree *left;
};

Tree::Tree() : data(0),
  right(NULL),
  left(NULL) {
}

Tree::Tree(int data) : data(data),
  right(NULL),
  left(NULL) {
}

Tree::~Tree() {
  if (this->right) {
      delete this->right;
    }
  if (this->left) {
      delete this->left;
    }
}

void Tree::add(int data) {
  if (this->data > data) {
      if (!this->left) {
          cout << "n< ";
          this->left = new Tree;
          this->left->data = data;
          return;
        }
      cout << "<";
      this->left->add(data);
      return;
    } else {
      if (!this->right) {
          cout << "n> ";
          this->right = new Tree;
          this->right->data = data;
          return;
        }
      cout << ">";
      this->right->add(data);
      return;
    }
  cout << "Error! Something went wrong in Tree" << endl;
}

int Tree::getData() {
  return this->data;
}

int Tree::maximumElement() {
  return (this->right)?this->right->maximumElement():this->data;
}

int Tree::minimumElement() {
  return (this->left)?this->left->minimumElement():this->data;
}

void Tree::printMaximumElements() {
  cout << this->data << " -> ";
  if (this->right) {
      this->right->printMaximumElements();
    }
}

void Tree::printMinimumElements() {
  cout << this->data << " -> ";
  if (this->left) {
      this->left->printMinimumElements();
    }
}

int main(int argc, char *argv[]) {
  Tree *root = new Tree(10);
  root->add(12);
  root->add(15);
  root->add(14);
  root->add(3);
  root->add(1);
  root->add(2);
  root->add(-1);
  cout << endl;
  cout << root->getData() << endl;
  cout << root->maximumElement() << endl;
  cout << root->minimumElement() << endl;
  cout << "\nMaximum elements: ";
  root->printMaximumElements();
  cout << "\n\nMinimum elements: ";
  root->printMinimumElements();
  cout << endl;
  delete root;
  return 0;
}


Output:
1
2
3
4
5
6
7
8
n> >n> >>n< n< <n< <<n> <<n< 
10
15
-1

Maximum elements: 10 -> 12 -> 15 -> 

Minimum elements: 10 -> 3 -> 1 -> -1 -> 


Create a new paste based on this one


Comments: