查找树中元素的级别

问题描述

所以我遇到了这个问题,我应该在树中找到元素的级别。似乎什么都没有解决,所以即时通讯在这里寻求帮助。

这是我到目前为止所得到的。这里的问题是第四个断言(假定返回的级别为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 (将#修改为@)