给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{1,2,3,#,#,4,5}
该二叉树之字形层序遍历的结果是
[
[1],
[3,2],
[4,5]
]
思路一:层序遍历【隔层逆序】
看到 这个比较容易想到层序遍历,但是奇数层和偶数层是逆着来的,那么我们在将每一层的节点加入列表时,加一个判断,如果是奇数层就按照层序遍历来,如果是偶数层那就翻转一下列表
代码如下:
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
if(pRoot==null)
return list;
//该标志位作为奇偶数层的判断,true为奇数层,进行一层遍历之后,取反
Boolean leftToRight=true;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);
while(queue.size()>0)
{
int len=queue.size();
ArrayList<Integer> tempList = new ArrayList<>();
while(len>0)
{
TreeNode node=queue.poll();
if(node!=null)
t