关于层次遍历,用广度优先遍历就行,如果要分层输出,只要加一个size就行。
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> r = new ArrayList<>();
if (root == null) {
return r;
}
int i = 0;
Queue<TreeNode> cur = new LinkedList<>();
cur.add(root);
while(!cur.isEmpty()){
int size = cur.size();
List<Integer> tmp = new ArrayList<>();
for(int j = 0; j < size; j++){
TreeNode c = cur.poll();
if (i % 2 == 0)
tmp.add(c.val);
else
tmp.add(0, c.val);
if (c.left != null)
cur.add(c.left);
if (c.right != null)
cur.add(c.right);
}
i++;
r.add(tmp);
}
return r;
}