首页 > 代码库 > 103. Binary Tree Zigzag Level Order Traversal
103. Binary Tree Zigzag Level Order Traversal
题目:
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] ]
链接: http://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
6/5/2017
2ms, 42%
注意的问题:
1. 第8行leftToRight左右的方向顺序
2. LinkedList addFirst, addLast
1 public class Solution { 2 public List<List<Integer>> zigzagLevelOrder(TreeNode root) { 3 List<List<Integer>> ret = new ArrayList<>(); 4 if (root == null) return ret; 5 6 LinkedList<TreeNode> list = new LinkedList<TreeNode>(); 7 Queue<TreeNode> queue = new LinkedList<TreeNode>(); 8 boolean leftToRight = true; 9 queue.add(root); 10 11 while (!queue.isEmpty()) { 12 int size = queue.size(); 13 List<Integer> temp = new ArrayList<Integer>(); 14 15 for (int i = 0; i < size; i++) { 16 TreeNode node = queue.poll(); 17 if (leftToRight) { 18 if (node.left != null) { 19 list.addFirst(node.left); 20 } 21 if (node.right != null) { 22 list.addFirst(node.right); 23 } 24 } else { 25 if (node.right != null) { 26 list.addFirst(node.right); 27 } 28 if (node.left != null) { 29 list.addFirst(node.left); 30 } 31 } 32 temp.add(node.val); 33 } 34 ret.add(temp); 35 int listSize = list.size(); 36 for (int i = 0; i < listSize; i++) { 37 queue.add(list.poll()); 38 } 39 leftToRight = !leftToRight; 40 } 41 return ret; 42 } 43 }
更多讨论
https://discuss.leetcode.com/category/111/binary-tree-zigzag-level-order-traversal
103. Binary Tree Zigzag Level Order Traversal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。