LeetCode Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:杭州二手房成交数据 编辑:程序博客网 时间:2024/05/21 01:58

题目:

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.


OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

   1  / \ 2   3    /   4    \     5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
题意:

就是给定一棵二叉树,然后按照之字形来输出,其实就是层次遍历,只不过遇到偶数层,就换一下顺序即可,换汤不换药的题,和我之前的那两篇博客的方法基本一样。

public class Solution {    public List<List<Integer>> zigzagLevelOrder(TreeNode root){List<List<Integer>> list = new ArrayList<List<Integer>>();LinkedList<TreeNode> node = new LinkedList<TreeNode>();if(root == null)return list;else{    node.add(root);    int length = node.size();    int i = 1;    while(!node.isEmpty())    {    List<Integer> nodes = new ArrayList<Integer>();    while(length-- > 0)    {    int value = node.peek().val;    TreeNode n = node.peek();    node.poll();    nodes.add(value);    if(n.left != null)    node.add(n.left);    if(n.right != null)    node.add(n.right);    }    length = node.size();    if(i % 2 == 0)    Collections.reverse(nodes);    list.add(nodes);    i++;    }    return list;}}}


0 0
原创粉丝点击