LeetCode_103Binary Tree Zigzag Level Order Traversal

来源:互联网 发布:qq炫舞头像源码 编辑:程序博客网 时间:2024/05/22 04:29

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

public List<List<Integer>> zigzagLevelOrder(TreeNode root) {         List<List<Integer>> result = new ArrayList<List<Integer>>();      if (root == null) return result;      LinkedList<TreeNode> currentNodes = new LinkedList<TreeNode>();      currentNodes.add(root);      int level = 1;      while(!currentNodes.isEmpty()){          LinkedList<TreeNode> nextNodes = new LinkedList<TreeNode>();          List<Integer> list =new ArrayList<Integer>();          for (TreeNode treeNode : currentNodes) {            list.add(treeNode.val);            if (treeNode.left!=null) {                nextNodes.add(treeNode.left);            }            if (treeNode.right!=null) {                nextNodes.add(treeNode.right);            }        }          if(level %2 ==0){              Collections.reverse(list);          }          result.add(list);          currentNodes = nextNodes;          level++;      }      return result;    }
0 0