void deletenode(node * root,int data){
if(root==NULL)return;
if(data>root->data){
deletenode(root->right,data);
}else if(data<root->data){
deletenode(root->left,data);
}
else{
node * todelete;
todelete=root;
if(root->left==NULL){
root=root->right;
}
else if(root->right==NULL){
root=root->left;
}
else{
node * parent;
parent=root;
todelete=root->left;
while(todelete->right!=NULL){
parent=todelete;
todelete=todelete->right;
}
root->data=todelete->data;
if(parent==root){
root->left=todelete->left;
}else{
parent->right=todelete->left;
}
}
delete todelete;
}
}