LeetCode 103 Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:扫描仪软件下载 编辑:程序博客网 时间:2024/06/01 22:23

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]]

思路:在层次遍历的基础上加上一个布尔型的flag

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {boolean flag = true;        List<Integer> list ;        List<List<Integer>> result = new ArrayList<List<Integer>>();        LinkedList <TreeNode> linkedList = new LinkedList<TreeNode>();        if(root == null) return result;        TreeNode p;        int num = 1;        linkedList.addLast(root);        while(!linkedList.isEmpty()) {        list = new ArrayList<Integer>();            int i = 0;            int temp = 0;            while(i < num) {                p = linkedList.pollFirst();                if(flag) {                list.add(p.val);                }else{                list.add(0,p.val);                }                if(p.left != null) {                    linkedList.addLast(p.left);                    temp++;                }                if(p.right != null) {                    linkedList.addLast(p.right);                    temp++;                }                                i++;            }            flag=!flag;            num = temp;            result.add(list);        }        return result;    }}


0 0