我有一个这样声明的 BST:
struct nodeABB {
int data;
int ocurr;
nodeABB *left;
nodeABB *right;
};
“ocurr”值保存在树中插入相同数据的次数。
我需要一种递归算法来找到具有最大“ocurr”值的节点,如果有两个节点具有相同的值,则想法是返回具有最大数据的节点。
编辑:我最后一次尝试:
trypedef nodeABB* ABB;
ABB Max(ABB a) {
ABB ret = NULL;
if (!a)
return ret;
ABB a1 = Max(a->left);
ABB a2 = Max(a->right);
if (a1 && a2) {
int n1 = a1->ocurr;
int n2 = a2->ocurr;
if (n1 > n2)
ret = a1;
else if (n1 < n2)
ret = a2;
else
ret = (a1->data < a2->data ? a1 : a2);
} else if (!a1 && a2)
ret = a2;
else if (a1 && !a2)
ret = a1;
return ret;
}