0ms beats 100%. Easy to understand recursive solution.
\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    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {\n        \n        List<List<Integer>> res = new ArrayList<>();\n        zigzagHelp(root, 0, res);\n        return res;\n        \n    }\n    \n    public void zigzagHelp(TreeNode root, int level, List<List<Integer>> list) {\n        \n        if (root == null) {\n            return;\n        }\n        \n        if (list.size() <= level) {\n            list.add(new ArrayList<>());      \n        } \n        \n        if (level % 2 == 0) {\n            list.get(level).add(root.val);\n        }\n        else {\n           list.get(level).add(0, root.val);   \n        }\n        \n        zigzagHelp(root.left, level + 1, list);\n        zigzagHelp(root.right, level + 1, list);\n        \n    }\n}\n```
['Recursion', 'Java']