Binary Tree Zigzag Level Order Traversal
Similar to Binary Tree Level Order Travel, just need to add a flag to remeber the order. Change the order to opposite after the level is over.
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of binary tree. * @return: A list of lists of integer include * the zigzag level order traversal of its nodes' values */ public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { // write your code here ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>(); if (root == null) { return rst; } Queue<TreeNode> q = new LinkedList<TreeNode>(); q.offer(root); boolean isFromStart = true; while (!q.isEmpty()) { ArrayList<Integer> level = new ArrayList<Integer>(); int n = q.size(); for (int i = 0; i < n; i++) { TreeNode node = q.poll(); if (isFromStart) { level.add(node.val); } else { level.add(0, node.val); } if (node.left != null) { q.offer(node.left); } if (node.right != null) { q.offer(node.right); } } rst.add(level); isFromStart = !isFromStart; } return rst; } }
posted on 2017-06-13 09:18 codingEskimo 阅读(93) 评论(0) 编辑 收藏 举报