我的代码的问题是,当搜索左子值时,由于递归级别,它返回并检查右子值。返回不正确。我找不到克服它的方法。
node * search(node *ptr,int key)
{
if(ptr->data==key)
return ptr;
else
{
if(ptr->lchild!='\0')
search(ptr->lchild,key);
else
return '\0';
if(ptr->rchild!='\0')
search(ptr->rchild,key);
else
return '\0';
}
}
最佳答案
大概是这样
node * search(node *ptr,int key)
{
node *pwk;
if(ptr == NULL) return NULL;
if(ptr->data==key)
return ptr;
if(NULL!=(pwk=search(ptr->lchild,key)))
return pwk;
if(NULL!=(pwk=search(ptr->rchild,key)))// or return search(ptr->rchild,key);
return pwk;
return NULL;
}
关于c - 二叉树递归搜索c代码[不是二叉搜索树],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128999/