double getBeauty(tNode *T, int& leftCount, int& rightCount) { if(!tNode) return 1.0; if(root->left){ ++leftCount; getBeauty(root->left, leftCount, rightCount); } if(root->right){ ++rightCount; getBeauty(root->right, leftCount, rightCount); } return 1.0 / (abs(leftCount-rightCount) +1); }
|
כתבתי את זה די מהר אז יכולות להיות פה טעויות אבל אני חושב שהרעיון די ברור.
אתה כמובן קורא לפונקציה עם ערך של 0,0 ב leftCount ו rightCount
אם אתה צריך את זה בשפת C אז תשנה את הרפרנס לפוינטר.