Java (100% / 100%)
\n/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode(int x)
```\n/**\n * Definition for a binary tree node.\n * public class TreeNode {\n *     int val;\n *     TreeNode left;\n *     TreeNode right;\n *     TreeNode(int x) { val = x; }\n * }\n */\nclass Solution {\n    \n    // after first player choose, the second play can have 3 options, choose parent, left or right so that he can block the frist player from choose the subtree of the node that second player choose\n    \n    private int countL, countR;\n    \n    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {\n        helper(root, x, false, false);\n        int countP = n - countL - countR - 1;\n        return countL * 2 > n || countR * 2 > n || countP * 2 > n;\n    }\n    \n    \n    private void helper(TreeNode root, int x, boolean isXLeft, boolean isXRight) {\n        if (root == null) return;\n        \n        if (isXLeft) {\n            countL++;\n        } else if (isXRight) {\n            countR++;\n        }\n        \n        if (root.val == x) {\n            helper(root.left, x, true, false);\n            helper(root.right, x, false, true);\n        } else {\n            helper(root.left, x, isXLeft, isXRight);\n            helper(root.right, x, isXLeft, isXRight);\n        }\n    }\n}\n```
[]