【发布时间】:2013-04-14 06:51:43
【问题描述】:
我的代码的问题是,当搜索左子值时,由于递归级别,它会返回并检查右子值。并且返回不正确。我找不到克服它的方法。
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的声明。您可能会编码return search(ptr->lchild,key);,但我不明白您的代码想要做什么。你在编码什么样的树?树是如何构造的?它的不变量是什么? -
@BasileStarynkevitch 这只是一个未排序的二叉树。有足够的关于
node的数据 -
@BasileStarynkevitch 它只是一个带有两个子链接指针和一个整数数据的简单节点......而且它是未排序的,因为它只是一个二叉树......不是二叉搜索树
标签: c search recursion binary-tree