#include <iostream>
#include "Node.h"
#include "BinarySearchTree.h"
#include "AvlTree.h"

using namespace std;

int main()
{
   Node newNode1("One", 1);
   Node newNode2("Two", 2);
   Node newNode3("Three", 3);
   Node newNode4("Four", 4);
   Node newNode5("Five", 5);
   Node newNode6("Six", 6);
   Node newNode7("Seven", 7);
   Node newNode8("Eight", 8);
   Node newNode9("Nine", 9);
   Node newNode10("Ten", 10);

   //Item not found object:
   Node itemNotFound("Null Item!", -1);

   AvlTree<Node> avl(itemNotFound);
   BinarySearchTree<Node> bst(itemNotFound);

   avl.insert(newNode1);
   avl.insert(newNode2);
   avl.insert(newNode5);
   avl.insert(newNode6);
   avl.insert(newNode7);
   avl.insert(newNode9);

   bst.insert(newNode10);
   bst.insert(newNode8);
   bst.insert(newNode4);
   bst.insert(newNode3);


   // Keep in mind, you can only print these items out directly if you've
   //  overloaded the << operator!
   Node test;
  
   test = avl.find(newNode6);
   cout << test;
   test = bst.find(newNode1);
   cout << test;
   test = avl.findMin();
   cout << test;
   test = bst.findMax();
   cout << test << endl;

   cout << "AVL Tree:" << endl;
   avl.printTree();

   cout << "BST:" << endl;
   bst.printTree();
}
