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();