Leetcode 103. Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:mac拷贝视频到iphone 编辑:程序博客网 时间:2024/06/05 14:37

Question

Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).

For example:
Given binary tree {3,9,20,#,#,15,7},

   3   / \  9  20    /  \   15   7

return its zigzag level order traversal as:

[  [3],  [20,9],  [15,7]]

Code

 public List<List<Integer>> zigzagLevelOrder(TreeNode root) {        List<List<Integer>> results = new ArrayList<>();        if (root == null) {            return results;        }        Queue<TreeNode> queues = new ArrayDeque<>();        queues.add(root);        int time = 0;        while (!queues.isEmpty()) {            int len = queues.size();            List<Integer> temp = new ArrayList<>();            for (int i = 0; i < len; i++) {                TreeNode remove = queues.remove();                temp.add(remove.val);                if (remove.left != null) {                    queues.add(remove.left);                }                if (remove.right != null) {                    queues.add(remove.right);                }            }            if (time % 2 == 1) {                Collections.reverse(temp);            }            results.add(temp);            time++;        }        return results;    }
0 0
原创粉丝点击