问题
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例子
思路
-
方法1
使用队列,先按从上到下的顺序逐行打印,然后把下标为奇数的行都翻转
-
方法2
使用dfs【正常的层次遍历不能用】,保存一个参数level,如果level为奇数,说明需要翻转则头插【每次插在下标0】,否则尾插
代码
//方法1
class Solution {
public void reverse(List<Integer> t){
int i=0,j=t.size()-1;
while(i<j) {
int a = t.get(i);
t.set(i,t.get(j));
t.set(j,a);
i++;
j--;
}
}
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List