이진탐색트리 삭제질문

qw3709의 이미지

void deleteNode( char key )
{
treeNode *parent,*p,*succ,*succ_parent;
treeNode *child;

parent=NULL;
p=root;

while((p=!NULL)&&(key!=p->key))
{
parent=p;

if(keykey)
p=p->left;
else
p=p->right;
}


if(p==NULL){
printf("\n 찾는 키가 이전 트리에 없습니다 !! ");
return;
}

parent=p;


if(p->right!=NULL&&p->left!=NULL){





}

else if(p->right==NULL||p->left==NULL){
if(p->left!=NULL)
child=p->left;
else
child=p->right;


if(parent!=NULL)
{
if(parent->left==p)
parent->left=child;
else
parent->right=child;
}
root=child;
}
else{
if(parent->left==NULL)
parent->right=NULL;
else
parent->left=NULL;
}
}

탐색후 삭제하는부분이에요
저기 비워져잇는 if는나중에 작성할껀데

이거왜 실행이안되죠...

오류코드로는 assignment makes pointer from interger without a cast
이거한개뜨네요