,所以我C編碼的二叉搜索樹看起來與這個結構:二叉搜索樹
struct tnode
{
int content;
struct tnode *left; /* left tree part */
struct tnode *right; /* right tree part */
};
我的主要方法:
int main()
struct tnode *Baum = NULL;
struct tnode *tmpPos = NULL;
Baum = addelement (Baum, 32);
Baum = addelement(Baum, 50);
Baum = addelement(Baum, 60);
tmpPos = searchnode(Baum,50);
所以basicly這造成我3二叉搜索樹元素(32,50,60)。我的searchnode方法應該將指針移動到「50」,這樣我可以在之後刪除它。然而,如果搜索的元素是我的二叉搜索樹的根,我的searchnode方法只返回指針。
searchnode:
struct tnode *searchnode(struct tnode *p, int nodtodelete)
{
if (p == NULL)
{
printf("Baum ist leer oder Element nicht vorhanden \n");
}
if (p -> content == nodtodelete)
{
return p;
}
if (p->content > nodtodelete)
{
searchnode (p->right, p->content);
}
if (p->content < nodtodelete)
{
searchnode(p->left, p->content);
}
}
也許你們能幫助我。
難道你沒有將左/右子樹的決定顛倒過來嗎? 'if(p-> content> nodtodelete)'你應該走左路。 –
歡迎來到本站!查看[tour](https://stackoverflow.com/tour)以獲得更多關於提問的問題,以吸引高質量的答案。你是否已經確認'addelement()'正常工作? – cxw
'searchnode'不會在4個if中的3箇中返回任何結果。 – halex