二叉树的之字型层次遍历
题目描述:
解题思路
设置一个标志位flag,当flag为true时,执行从左到右的遍历,反之则为从右到左
将数放入到队列中,判断队列是否为空,作为树遍历的结束条件
代码如下
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> zigzagLevelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if(root==null)return res;
// 设置一个标志位
Boolean flag = true;
Queue<TreeNode> que = new LinkedList<>();
que.offer(root);
while(!que.isEmpty()){
int size = que.size();
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i< size; i++){
TreeNode node = que.poll();
if(flag)list.add(node.val);
else list.add(0,node.val);
if(node.left != null) que.offer(node.left);
if(node.right != null) que.offer(node.right);
}
res.add(list);
flag = !flag;
}
return res;
}