这是一道解题思路总让我困扰的题目,今天终于把思路捋清楚捋顺了,以后应该都不会卡壳了。卡壳的主要原因是在遍历树的时候以及添加其节点的顺序是有点捋不清,总是写错。

题目描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
3↵ / ↵ 9 20↵ / ↵ 15 7
该二叉树之字形层序遍历的结果是
[↵ [3],↵ [20,9],↵ [15,7]↵]

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
import java.util.ArrayList;
public class Solution {
    //这道题目就是层次遍历的变形.按照层次遍历的思想先遍历,如3;9,20;15,7;18,16;
    //然后在添加元素的时候把第二行第四行的数据反过来添加到结果中去就可以了
    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
        ArrayList<ArrayList<Integer>> result  = new ArrayList<ArrayList<Integer>>();
        if(root == null)return