在AVL树中搜索平衡因子为-2的节点

时间:2013-05-23 04:39:12

标签: c data-structures avl-tree

我知道如何使用特定键将节点搜索到AVL树中。但我想知道如何在平衡因子为-2

的AVL树中进行搜索

以下是我尝试过的代码。

void searchForUnrequiredBalanceFactor(avlnode *n , avlnode *r)
{
    avlnode *ptr ;
    ptr = n ;
    if (ptr==NULL)
        return;
    else
    {
        if (ptr ->balFact == -2)
        {
            r = ptr ;
            return ;
        }
        else
        {
            searchForUnrequiredBalanceFactor(ptr->left,r);
            searchForUnrequiredBalanceFactor(ptr->right,r);
        }
    }
}

但是代码没有按要求运行,是什么问题?

输出:

balance factor of node 3 : 0 
balance factor of node 5 : 0 
balance factor of node 10 : 0 
balance factor of node 30 : 0 
balance factor of node 25 : -1 
balance factor of node 20 : -2 
balance factor of node 15 : -1 
*searchForUnrequiredBalanceFactor called and printf*
node with data : 0 have balance factor : 0

1 个答案:

答案 0 :(得分:1)

假设avlnode *r是您要存储找到的节点的输出参数,则需要更改此行:

r = ptr ;

到此:

*r = *ptr ;