node* insert_node(node *tree,node *target); /* tree に target挿入 */
node* get_parent(node *tree,node *target); /* 親を取得、root時NULL */

void delete(node *tree,char n[]){
node* target, *p;
target = search(tree,n);
if(target != NULL){
p = get_parent(tree,target);
if( p != NULL ){ /* 親がいない場合の処理 */ }
else if( p->left == target ){ p->left = NULL; }
else if( p->right == target ){ p->right = NULL; }
insert_node(tree,target->left);
insert_node(tree,target->right);

delete_memory(target);
}
else puts("データは存在しません。");
} 

node* get_parent(node* tree, node* target){
int c;
if( !tree || !target ){ return NULL; }
if( tree->left == target || tree->right == target ){ return tree; }
c = strcmp(tree->name,target->name);
if( c == 0 ){ return NULL; }
return get_parent( ( c < 0 ) ? tree->left : tree->right ,target);
}

node* insert_node(node* tree,node* target){
int c;
if( tree == NULL || target == NULL ){ return NULL; }
c = strcmp(tree->name,target->name);
if( c == 0 ){ /* 競合処理 */; }
else if( c < 0 ){
if( tree->right == NULL ){ tree->right = target; }
else { return insert_node(tree->right,target); }
} else {
if( tree->left == NULL ){ tree->left = target; }
else { return insert_node(tree->left,target); }
}
return tree;
} 
