LeetCode - Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:cdn和云计算 编辑:程序博客网 时间:2024/05/21 09:42
作者:disappearedgod
文章出处:http://blog.csdn.net/disappearedgod/article/details/37560509
时间:2014-5-26

题目


Binary Tree Zigzag Level Order Traversal

 Total Accepted: 11074 Total Submissions: 41859My Submissions

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

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


解法


1.添加奇偶层
多次提交后AC
/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {        //Deque<Integer> stack = new ArrayDeque<Integer>();        ArrayList<ArrayList<Integer>>  retlist = new ArrayList<ArrayList<Integer>> ();                if(root!=null){            Deque<TreeNode> s = new ArrayDeque<TreeNode>();                        s.push(root);            boolean stop = false;            boolean odd= true;            while(!stop){                Deque<TreeNode> s2 = new ArrayDeque<TreeNode>();                ArrayList<Integer> list = new ArrayList<Integer>();                while(!s.isEmpty()){                                        if(odd){                        TreeNode t = s.pop();                        if(t==null)                            continue;                        list.add(t.val);                        if(t.left!=null)                            s2.push(t.left);                        if(t.right!=null)                            s2.push(t.right);                                            }else{                        TreeNode t = s.pop();                        if(t==null)                            continue;                        list.add(t.val);                        if(t.right!=null)                            s2.push(t.right);                        if(t.left!=null)                            s2.push(t.left);                                            }                }                odd = !odd;                retlist.add(list);                if(s2.isEmpty())                    return retlist;                s = s2;                System.gc();                            }        }        return retlist;    }}


0 0
原创粉丝点击