leetcode(十四)Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:怎么读取串口数据 编辑:程序博客网 时间:2024/05/18 03:52

copyright:leetcode

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

算法类似与:Binary Tree Level Order Traversal

/** * 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) {ArrayList<List<Integer>> AList = new ArrayList<List<Integer>>();recur(root, 0, AList);Iterator it = AList.iterator();ArrayList<Integer> list = null;int tmp = 0;while(it.hasNext()){    it.next();    if(it.hasNext()){        list = (ArrayList<Integer>)it.next();        int len = list.size();        for(int i=0;i < len / 2;i++){        tmp = ((Integer)(list.get(i))).intValue();        list.set(i, list.get(len - 1 - i));        list.set(len - 1 - i, tmp);        }    }else{        break;    }}return AList;    }private void recur(TreeNode tNode, int depth, ArrayList<List<Integer>> AList){ArrayList<Integer> list = null;if(tNode != null){if(AList.size() > depth){//means list depth has exlist = (ArrayList<Integer>)(AList.get(depth));}else{list = new ArrayList<Integer>();AList.add(list);}//System.out.println(tNode.val);//list.add(tNode.val);recur(tNode.left, depth + 1, AList);recur(tNode.right, depth + 1, AList);}}}        




0 0
原创粉丝点击