问题描述
所以我遇到了这个问题,我应该在树中找到元素的级别。似乎什么都没有解决,所以即时通讯在这里寻求帮助。
这是我到目前为止所得到的。这里的问题是第四个断言(假定返回的级别为2)不起作用,并且断言被警告。我想过也许不尝试递归地做,但是那怎么办呢?
int findElementLevel(const BSTree tree,const int element) {
int level = 0;
if (tree == NULL) {
return -1;
}
if (tree->data == element) {
return level;
}
if (element < (tree)->data) {
level++;
findElementLevel(tree->left,element);
return level;
}
if (element > (tree)->data) {
level++;
findElementLevel(tree->right,element);
return level;
}
}
void testNewTree(void) {
BSTree tree = emptyTree();
assert(isEmpty(tree));
int arr[5] = {3,2,5,1,4},i;
for (i = 0; i < 5; i++)
{
insertSorted(&tree,arr[i]);
}
assert(findElementLevel(tree,3) == 0);
assert(findElementLevel(tree,2) == 1);
assert(findElementLevel(tree,5) == 1);
assert(findElementLevel(tree,1) == 2);
assert(findElementLevel(tree,4) == 2);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)