Fork me on github

103 二叉树的锯齿形层次遍历

import java.util.*;

/*
层次遍历的变形
 */
class Solution {
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        if(root == null){
            return res;
        }
        queue.add(root);
        int l2r = 1;
        while(!queue.isEmpty()){
            List<Integer> cur = new ArrayList<>();
            int size = queue.size();
            for(int i = 0; i < size; i++){
                TreeNode node = queue.poll();
                cur.add(node.val);
                if(node.left != null){
                    queue.add(node.left);
                }
                if(node.right != null){
                    queue.add(node.right);
                }
            }

            if(l2r == -1){
                Collections.reverse(cur);
            }
            res.add(cur);
            l2r = -l2r;
        }
        return res;
    }
}
posted @ 2020-08-26 22:25  zjy4fun  阅读(129)  评论(0编辑  收藏  举报