C++ Easy Postorder Traversal (85% time beat)
LOGIC : \n\nSimply get the count of left nodes and right nodes recursively and get the remaining nodes(after removing the current nodes by doing n-(l+r)-1. Now 
**LOGIC : **\n\nSimply get the count of left nodes and right nodes recursively and get the remaining nodes(after removing the current nodes by doing n-(l+r)-1. Now we multiply them and check if it is same as our current multiplication or greater than. If equal, we just increase the counter and if greater, we update our ansvalue and set counter to 1.\nThere is a thing to keep in mind. \'l\', \'r\' and \'rem\' can be \'0\'. If so happens then set it to 1 so that when multiplying it won\'t make the answer \'0\'.\n\nHere\'s the code\n\n```\nclass Solution {\npublic:\n    long long val = 0, cnt = 0;\n    int traversal(TreeNode* root, int n)\n    {\n        if(!root) return 0;\n        int l = traversal(root->left, n);\n        int r = traversal(root->right, n);\n        int nl = l, nr = r, rem = n-l-r-1;\n        if(l == 0) \n        {\n            nl++;\n        }\n        if(r == 0)\n        {\n            nr++;\n        }\n        if(rem == 0)\n        {\n            rem++;\n        }\n        long long ans = 1L*nl*nr*rem;\n        if(ans > val)\n        {\n            val = ans;\n            cnt=1;\n        }\n        else if(ans == val)\n        {\n            cnt++;\n        }\n        return l+r+1;\n    }\n    int countHighestScoreNodes(vector<int>& parents) {\n        TreeNode* root;\n        vector<TreeNode*> temp(parents.size());\n        for(int i = 0; i < temp.size(); i++)\n        {\n            temp[i] = new TreeNode(i);\n        }\n        for(int i = 1; i < temp.size(); i++)\n        {\n            if(temp[parents[i]]->left) temp[parents[i]]->right = temp[i];\n            else temp[parents[i]]->left = temp[i];\n        }\n        root = temp[0];\n        traversal(root, parents.size());\n        return cnt;\n    }\n};\n```
['Depth-First Search', 'Recursion']