I am using this function to remove a node from a binary tree. It works fine in most situations. Often though it will leave either the left or right pointer from a parent null. So when I go to display it the program just blows up. Thanks for any ideas.
Code:Node *Btree::remove(Node *root,int key) { Node *index = NULL; Node *index2 = NULL; if(!root) return root; if((root->getData())== key) { if(root->getLeft() == root->getRight()) { delete root; return NULL; } else if(!root->getLeft()) { index = root->getRight(); delete root; return index; } else if(!root->getRight()) { index = root->getLeft(); delete root; return index; } else { index2 = root->getRight(); index = root->getRight(); while(index->getLeft()) index = index->getLeft(); index->setLeft(root->getLeft()); delete root; return index2; } } if(root->getData() < key) root->setRight(remove(root->getRight(),key)); else root->setLeft(remove(root->getLeft(),key)); return root; }



LinkBack URL
About LinkBacks



).