我知道如何使用特定键将节点搜索到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
答案 0 :(得分:1)
假设avlnode *r
是您要存储找到的节点的输出参数,则需要更改此行:
r = ptr ;
到此:
*r = *ptr ;