c++ - Binary Search Tree delete function not working properly -
i working binary search tree , attempting create function delete single node. reason nodes not delete (most of seem instances have right node not left) node won't delete seems pretty haphazard makes difficult debug. error
mov(30071,0x7fff73b1d300) malloc: *** error object 0x7fcb2b404f40: pointer being freed not allocated *** set breakpoint in malloc_error_break debug abort trap: 6
but of time node doesn't delete , program continues run.
here delete function:
node* tree::deletenode(node *node,string title) { if(node == null){ return node; } else if(node->title.compare(title) > 0){ node->left = deletenode(node->left, title); } else if(node->title.compare(title) < 0){ node->right = deletenode(node->right, title); } else { //no child if(node->left == null && node->right == null){ if(node == node->parent->right) { node->parent->right = null; } else { node->parent->left = null; } node = null; } //one child else if(node->left == null) { //here fail node *temp = node; node = node->right; delete temp; } else if(node->right == null) { node *temp = node; node = node->left; delete temp; } else { node *temp = treeminimum(node->right); node->title = temp->title; node->right = deletenode(node->right, temp->title); } } return node; }
and:
node* tree::treeminimum(node *node) { while(node->left != null) { node = node->left; } return node; }
it same nodes won't delete other nodes same structurally (no left node, yes right node) delete no problem. program starts same tree of 50 nodes. apologize if information isn't suffice, please let me know if there else can provide. thank you
Comments
Post a Comment