C++ O(N) recursive
Optimal strategy is choosing a node adjacent to your opponents to claim the region beyond it.\n\nclass Solution {\npublic:\n    int nLeft, nRight, nAbove, y;\n 
Optimal strategy is choosing a node adjacent to your opponents to claim the region beyond it.\n```\nclass Solution {\npublic:\n    int nLeft, nRight, nAbove, y;\n    bool btreeGameWinningMove(TreeNode* root, int n, int x) {\n        nLeft=0, nRight=0, nAbove=0, y=x;\n        count(root);\n        return (\n               nLeft  > nRight + nAbove\n            || nRight > nLeft  + nAbove\n            || nAbove > nLeft  + nRight \n        );\n    }\n    \n    void count(TreeNode* node){\n        if(!node) return;\n        \n        if(node->val==y){\n            countBelow(node->left,  nLeft );\n            countBelow(node->right, nRight);\n            return;\n        }\n        ++nAbove;\n        count(node->left);\n        count(node->right);\n    }\n    \n    void countBelow(TreeNode* node, int &t){\n        if(!node) return;\n        \n        ++t;\n        countBelow(node->left,  t);\n        countBelow(node->right, t);\n    }\n};\n```
[]