的最大值的節點我有一個BST聲明如下:給定一個二叉搜索樹,找到ocurrences
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;
}
這真的不是一個難題,你有沒有試圖自己解決它?如果不是,爲什麼不呢?如果是這樣,你能向我們展示你的嘗試嗎? – Dukeling
您可能想要指定樹的定義排序順序(數據與ocurr),因爲這會對如何執行此操作產生巨大影響。 – WhozCraig
@WhozCraig根據數據值依次插入節點。 – Wyvern666