Java easy to understand solution
My algorithm:\n1. Find the node with value x\n2. Calculate number of nodes in the left and right sub trees of x\n3. n - (leftCount + rightCount + 1) will give r
My algorithm:\n1. Find the node with value `x`\n2. Calculate number of nodes in the left and right sub trees of `x`\n3. `n - (leftCount + rightCount + 1)` will give remaining subtree node count.\n4. Check if one of the above 3 subtrees has node count greater than the sum of remaining two.\n\n```\nclass Solution {\n    int nodeCount(TreeNode root) {\n        if (root == null) return 0;\n        return 1 + nodeCount(root.left) + nodeCount(root.right);\n    }\n\n    TreeNode find(TreeNode root, int x) {\n        if (root == null) return null;\n        if (root.val == x) return root;\n        TreeNode left = find(root.left, x);\n        if (left != null) return left;\n        return find(root.right, x);\n    }\n\n    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {\n        if (root == null) return false;\n        TreeNode p1Node = find(root, x);\n        int leftCount = nodeCount(p1Node.left);\n        int rightCount = nodeCount(p1Node.right);\n        int remCount = n - (leftCount + rightCount + 1);\n        if (remCount > (leftCount + rightCount + 1) ||\n            leftCount > (remCount + rightCount + 1) ||\n            rightCount > (remCount + leftCount + 1)) {\n            return true;\n        }\n        return false;\n    }\n}\n```
[]