JAVA easy to understand solution
\n/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode() {}\n
```\n/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode() {}\n *     TreeNode(int val) { this.val = val; }\n *     TreeNode(int val, TreeNode left, TreeNode right) {\n *         this.val = val;\n *         this.left = left;\n *         this.right = right;\n *     }\n * }\n */\nclass Solution {\n    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {\n        TreeNode node = findNode(root, x);\n        n /= 2;\n        int l = countNodes(node.left);\n        if (l > n)\n            return true;\n        int r = countNodes(node.right);\n        if (r > n)\n            return true;\n        int p = countNodes(node);\n        if (p > n)\n            return false;\n        return true;\n    }\n    \n    private int countNodes(TreeNode node){\n        if (node == null)\n            return 0;\n        return countNodes(node.left) + countNodes(node.right) + 1;\n    }\n    \n    private TreeNode findNode(TreeNode node, int x){\n        if (node == null || node.val == x)\n            return node;\n        TreeNode l = findNode(node.left, x);\n        TreeNode r = findNode(node.right, x);\n        return l == null ? r : l;\n    }\n}\n```
['Java']