题目链接
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
q.add(pRoot);
int rowCount = 1;
while (!q.isEmpty()) {
ArrayList<Integer> row = new ArrayList<>();
int cnt = q.size();
while (cnt-- > 0) {
TreeNode node = q.remove();
if (node==null) continue;
row.add(node.val);
q.add(node.left);
q.add(node.right);
}
rowCount++;
if (row.size()>0 && rowCount%2 == 1) {
Collections.reverse(row);
res.add(row);
}
else if (row.size()>0 && rowCount%2 == 0) res.add(row);
}
return res;
}
}