0
嘿,我想從我的二叉樹中刪除一個節點。我知道一個節點不能被刪除,如果它有左右兩邊的孩子。所以我寫了相應的代碼。但每次程序運行時,都會崩潰。二叉樹刪除函數錯誤
void btdel(btree *b, char d)
{
if (b->lchild->data!=d&&b->lchild!=NULL)
btdel(b->lchild,d);
if (b->rchild->data!=d&&b->rchild!=NULL)
btdel(b->rchild,d);
if (b->lchild!=NULL&&b->lchild->data==d)
{
if (b->lchild->rchild==NULL)
b->lchild=b->lchild->lchild;
else if (b->lchild->lchild==NULL)
b->lchild=b->lchild->rchild;
else {cout<<"cannot delete"; exit(1);
}
}
else if (b->rchild!=NULL&&b->rchild->data==d)
{
if (b->rchild->rchild==NULL)
b->rchild=b->rchild->lchild;
else if (b->rchild->lchild==NULL)
b->rchild=b->rchild->rchild;
else
{cout<<"Cannot delete. "; exit(1);}
}
}
它會在哪條線上崩潰? – Borgleader
不妨檢查一下b!= NULL。 – Andy