In my binary tree, I can delete values that have other values extending from it. If they don't, or if it is the only value, the program crashes. Not sure how to fix it. This is the deletion part of the code:

void delete_tree (binarytree *t, int x){ binarytree temp; if (!is_empty(*t)) { if (x == (*t)-> data) { if (((*t) -> left == NULL)&&((*t) -> right == NULL)) { temp = (*t); (*t) = NULL; free (temp); } if (((*t) -> left != NULL)&&((*t)-> right == NULL)) { temp = (*t); (*t) = (*t) -> left; free (temp); } if (((*t)-> left == NULL)&&((*t)-> right != NULL)) { temp = (*t); (*t) = (*t) -> right; free (temp); } if (((*t) -> left != NULL)&&((*t) -> right != NULL)) { temp = (*t)-> right; while (temp -> left != NULL) { temp = (*t) -> left; } temp -> left = (*t) ->left; temp = (*t); (*t) = (*t) -> right; free (temp); } } else { if ( x <= (*t) -> data) delete_tree(&(*t) -> left, x); else delete_tree(&(*t) -> right, x); } } else printf("No data found.\n");}

Look at line 16 - what happens when you get there and you have just been through lines 9 - 14? You have wiped out your tree and then on line 16 you are testing it.

There needs to be a return in your different cases - or an else before each

Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks. Concludes by examining the means of securing and protecting critical systems and infâ€¦