【发布时间】:2014-01-29 14:27:38
【问题描述】:
我有一个 AVL 树类,我想找到每个节点的平衡因子(balance_factor: node->Left_child->height - node->right_Child->height)
这是我的代码:
int tree::findBalanceFactor(node p){
int a;
if( p.lchild) p.lchild->balance_factor=findBalanceFactor( *p.lchild );
if( p.rchild) p.rchild->balance_factor=findBalanceFactor( *p.rchild );
if( p.rchild && p.lchild ) a=p.balance_factor = p.lchild->height - p.rchild->height ;
if( p.rchild && !p.lchild ) a=p.balance_factor = 0 - p.rchild->height;
if( !p.rchild && p.lchild ) a=p.balance_factor = p.lchild->height;
if( !p.rchild && !p.lchild ) a=p.balance_factor = 0;
cout << "md" << a << endl;
return a;
}
在主函数中,当我打印 root->balance_factor 时,它总是显示数字为零 balance_factor 是一个公共变量,在构造函数中我将其分配为零。
我的代码有什么问题?
【问题讨论】:
标签: c++ recursion tree avl-tree