Java, easy understand recursive methods, beats 96% (attach easy BFS methods)
//recursive method\n      public List<List<Integer>> zigzagLevelOrder(TreeNode root) {\n            List<LinkedList<Integer>> res = new ArrayList<>();\n        
    //recursive method\n      public List<List<Integer>> zigzagLevelOrder(TreeNode root) {\n            List<LinkedList<Integer>> res = new ArrayList<>();\n            \n            helper(res,root,0);\n            \n            List<List<Integer>> finalRes = new ArrayList<>();\n            finalRes.addAll(res);\n            return finalRes;\n        }\n        \n        public void helper(List<LinkedList<Integer>> res, TreeNode root, int level){\n            if(root == null)\n                return;\n            if(res.size() <= level)\n                res.add(new LinkedList<>());\n            \n            if((level + 1) % 2 != 0)\n                res.get(level).add(root.val);\n            else\n                res.get(level).addFirst(root.val);\n            \n            helper(res,root.left,level + 1);\n            helper(res,root.right,level + 1);     \n        }\n    \n    \n       //BFS method\n      public List<List<Integer>> zigzagLevelOrder(TreeNode root) {\n        List<List<Integer>> res = new ArrayList<>();\n        if(root == null)\n            return res;\n        \n        Queue<TreeNode> q = new LinkedList<>();\n        q.offer(root);\n        int level = 1;\n        while(!q.isEmpty()){\n            LinkedList<Integer> path = new LinkedList<>();\n            int levelNums = q.size();\n            \n            for(int i = 0; i < levelNums; i++){\n                root = q.poll();\n                if(level % 2 != 0){\n                    path.add(root.val);\n                }else{\n                    path.addFirst(root.val);\n                }\n                \n                if(root.left != null)\n                    q.offer(root.left);\n                if(root.right != null)\n                    q.offer(root.right);\n            }\n            res.add(path);\n            level++;\n        }\n        \n        return res;\n    }
[]