题目:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
示例
输入:{8,6,10,5,7,9,11}
返回值:[[8],[10,6],[5,7,9,11]]
解法:正常进行先序遍历,等到从右向左的时候把ArrayList逆转。
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> arrays = new ArrayList<>();
if (pRoot == null)
return arrays;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
boolean flag = false;
while(queue.size()!=0){
int size = queue.size();
ArrayList<Integer> current = new ArrayList<>();
while(size > 0){
TreeNode temp = queue.poll();
current.add(temp.val);
if(temp.left != null)
queue.add(temp.left);
if(temp.right != null)
queue.add(temp.right);
size--;
}
if(flag)
Collections.reverse(current);
flag = !flag;
arrays.add(current);
}
return arrays;
}
}