diff --git a/bst b/bst
index e8d3bae141ce5eca528de1da897443cd5fc7bdec..0e3c369d4c667788070552a114119fcfdd9a2ce5 100755
Binary files a/bst and b/bst differ
diff --git a/include/bst_lib.h b/include/bst_lib.h
index e174a8d08b49040d3802fce1501c1f8c14e7f911..ea0ac21edbe706f65d2bb2332c91c869f96f21dd 100644
--- a/include/bst_lib.h
+++ b/include/bst_lib.h
@@ -31,8 +31,10 @@ class Node{
 
 class Tree{
   public:
-    const Node *root;
+    Node *root;
     Node* createNode(int key, string truck, Node *father);
     bool insertNode(int key, string truck, Node *father, Node *current);
     Node* binarySearch(int key, Node *current);
 };
+
+extern Node nullNode;
\ No newline at end of file
diff --git a/lib/bst_lib.a b/lib/bst_lib.a
index 484b95738fdf068abadd705af671f782108a700d..e710adc24ebdba929d6daf0dc2190841880c5eff 100644
Binary files a/lib/bst_lib.a and b/lib/bst_lib.a differ
diff --git a/obj/bst_lib.o b/obj/bst_lib.o
index 2e8af15074e4149ab478669e7dba59e563592235..3f98ad5bf4906bff78aa5262671b3d57b94c5481 100644
Binary files a/obj/bst_lib.o and b/obj/bst_lib.o differ
diff --git a/src/bst_lib.cpp b/src/bst_lib.cpp
index 0aa816862c078c624746bb0b75056b57316226b4..4f10ae302a0a94920e1342e0bfb06c559ad2bfe2 100644
--- a/src/bst_lib.cpp
+++ b/src/bst_lib.cpp
@@ -50,17 +50,17 @@ Node* Node::getFatherNode(){
 // Funções de manipulação da árvore
 
 bool Node::printInOrder(){
-  if(this==NULL){
+  if(this==&nullNode){
     return 0;
   }
   std::cout << "printInOrder - 1" << std::endl;
-  if(leftNode!=NULL){
+  if(leftNode!=&nullNode){
     std::cout << "printInOrder - 2" << std::endl;
     leftNode->printInOrder();
   }
   std::cout << "printInOrder - 3" << std::endl;
   std::cout << " " << truck << key << " " << std::endl;
-  if(rightNode!=NULL){
+  if(rightNode!=&nullNode){
     std::cout << "printInOrder - 4" << std::endl;
     rightNode->printInOrder();
   }
@@ -74,18 +74,20 @@ Node* Tree::createNode(int key, string truck, Node *father){
   std::cout << "createNode - 2  " << key << std::endl;
   aux->setTruck(truck);
   std::cout << "createNode - 3" << std::endl;
-  aux->setLeftNode(NULL);
+  aux->setLeftNode(&nullNode);
   std::cout << "createNode - 4" << std::endl;
-  aux->setRightNode(NULL);
+  aux->setRightNode(&nullNode);
   std::cout << "createNode - 5" << std::endl;
   aux->setFatherNode(father);
   return aux;
 }
 
 bool Tree::insertNode(int key, string truck, Node *father, Node *current){
-  if(current==NULL){
+  if(current==&nullNode){
     std::cout << "insertNode - 1" << std::endl;
+    cout << current << endl;
     current=createNode(key, truck, father);
+    cout << current << endl;
   }else if(current->getKey() > key){
     std::cout << "insertNode - 2" << std::endl;
     insertNode(key, truck, current, current->getLeftNode());
@@ -100,9 +102,9 @@ bool Tree::insertNode(int key, string truck, Node *father, Node *current){
 }
 
 Node* Tree::binarySearch(int key, Node *current){
-  if(current==NULL){
+  if(current==&nullNode){
     std::cout << "binarySearch - 1" << std::endl;
-    return(NULL);
+    return(&nullNode);
   }else if(current->getKey() > key){
     std::cout << "binarySearch - 2" << std::endl;
     return(binarySearch(key,current->getLeftNode()));
@@ -113,5 +115,5 @@ Node* Tree::binarySearch(int key, Node *current){
     std::cout << "binarySearch - 4" << std::endl;
     return(current);
   }
-  return(NULL);
+  return(&nullNode);
 }
diff --git a/src/main.cpp b/src/main.cpp
index 30c3234c141ca51e3114672bd358ecc04310e162..0f4d7548b8c97970ec099ed230291f7139372af6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -6,20 +6,24 @@
 
 using namespace std;
 
+Node nullNode;
+
 int main(int argc, char *argv[]) {
   Tree binaryTree;
   string input, auxTruck;
   int auxKey;
-
-  binaryTree.root=NULL;
+  
+  binaryTree.root=&nullNode;
 
   while (1) {
     cin >> input;
     if(input == "insert"){
       cin >> auxTruck;
       cin >> auxKey;
-      if(binaryTree.binarySearch(auxKey, binaryTree.root) == NULL){
-        binaryTree.insertNode(auxKey, auxTruck, NULL, binaryTree.root);
+      if(binaryTree.binarySearch(auxKey, binaryTree.root) == &nullNode){
+        cout << binaryTree.root << endl;
+        binaryTree.insertNode(auxKey, auxTruck, &nullNode, binaryTree.root);
+        cout << binaryTree.root << endl;
       }
     }else if(input == "print"){
       binaryTree.root->printInOrder();