本文共 1163 字,大约阅读时间需要 3 分钟。
思路:参考102题,依然是先放TreeNode进去,然后每次反向存入,注意left和right要跟着方向来。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List
> zigzagLevelOrder(TreeNode root) { List
> answerList = new ArrayList
>(); List
> list = new ArrayList
>(); if (root == null) { return list; } List initList = new ArrayList (); initList.add(root); answerList.add(initList); for (int i = 0; i < answerList.size(); i++) { System.out.println("i=" + i); List l = new ArrayList (); List newList = new ArrayList (); for (int j = answerList.get(i).size() - 1; j >= 0; j--) { TreeNode tree = answerList.get(i).get(j); l.add(answerList.get(i).get(j).val); if (i % 2 == 1) { if (tree.right != null) { newList.add(tree.right); } if (tree.left != null) { newList.add(tree.left); } } else { if (tree.left != null) { newList.add(tree.left); } if (tree.right != null) { newList.add(tree.right); } } } list.add(l); if (newList.size() != 0) { answerList.add(newList); } } return list; }}
耗时:296ms,上游。