Java simple solution- one bottom up recursion
\'\'\'\nclass Solution {\n    int left;\n    int right;\n    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {\n        if(root==null) return f
\'\'\'\nclass Solution {\n    int left;\n    int right;\n    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {\n        if(root==null) return false;\n        dfs(root, x);\n        //should see where to block , which node of x\'s left, right or parent\n        //the part with most nodes. part including parent does have number of\n        //n-left-right-1 nodes. max part should have more than n/2 to win.\n        return Math.max(n-left-right-1, Math.max(left, right)) > n/2;\n    }\n    \n    public int dfs(TreeNode root, int x){\n        \n        if(root==null) return 0;\n        \n        int l=dfs(root.left, x);\n        int r=dfs(root.right, x);\n        \n        if(root.val==x){\n            left=l;\n            right=r;\n        }\n        \n        return l+r+1;\n    }\n}\n\'\'\'
[]