0
所以我想寫一個遞歸函數來返回在C++中的值的二叉樹的平均值。這是我有,這是行不通的:找到二叉樹的平均值C++
double avg(bNode* root)
{
if(!root) return 0;
int sum = avg(root->left) + avg(root->right) + root->value;
if(root->left && root->right) return sum/3;
else if(!root->left && !root->right) return sum;
else return sum/2;
}
感謝您的幫助。
你嘗試過在紙上畫一個簡單的樹,從手工嘗試你的算法? – Cameron
它顯示任何錯誤?你可以發佈你的結果 – user1954492
考慮樹根節點的值爲1,左邊是2,左邊 - >左邊是3.可以很容易地驗證平均值是2.然而,你的函數將產生1.75。我不認爲這很容易做到遞歸,可以考慮使用累加器。 – Betagan