Binary Tree Zigzag Level Order Traversal (二叉树锯齿形层次遍历)
2014-03-08 09:27
387 查看
题目原型:
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
return its zigzag level order traversal as:
基本思路:
这个题目比较好想。
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 ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); ArrayList<TreeNode> nodeSet = new ArrayList<TreeNode>(); ArrayList<TreeNode> tmp; ArrayList<Integer> numSet; int count = 1; if (root != null) { nodeSet.add(root); while (nodeSet.size() > 0) { tmp = new ArrayList<TreeNode>(); numSet = new ArrayList<Integer>(); // 添加到list中 for (TreeNode tn : nodeSet) numSet.add(tn.val); list.add(numSet); // 求下一层的节点,注意是从后往前遍历 for (int i = nodeSet.size()-1;i>=0;i--) { if (count % 2 == 0) { if (nodeSet.get(i).left != null) tmp.add(nodeSet.get(i).left); if (nodeSet.get(i).right != null) tmp.add(nodeSet.get(i).right); } else //如果位于奇数层,则从右孩子开始添加 { if (nodeSet.get(i).right != null) tmp.add(nodeSet.get(i).right); if (nodeSet.get(i).left != null) tmp.add(nodeSet.get(i).left); } } nodeSet = tmp; count++; } } return list; }
相关文章推荐
- 【LeetCode】Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历 - Medium(LinkedIn)
- LeetCode-Binary Tree Zigzag Level Order Traversal-二叉树锯齿层次遍历-二叉树DFS层次遍历
- 【遍历二叉树】06二叉树曲折(Z字形)层次遍历II【Binary Tree Zigzag Level Order Traversal】
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- LeetCode: 103_Binary Tree Zigzag Level Order Traversal | 二叉树Zigzag层次遍历 | Medium
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- Binary Tree Level Order Traversal:层次遍历二叉树,并返回每层的数值
- [leetcode-二叉树层次遍历并统计每层节点数]--102. Binary Tree Level Order Traversal
- 【LeetCode笔记】Binary Tree Zigzag Level Order Traversal 二叉树Z字形遍历
- LeetCode | Binary Tree Zigzag Level Order Traversal(二叉树锯齿形层序输出)
- Leetcode 103 ,Binary Tree Zigzag Level Order Traversal(二叉树Z形分层遍历)
- 【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- 5.1.6—二叉树的遍历—Binary Tree Zigzag Level Order Traversal
- 【LeetCode】Binary Tree Zigzag Level Order Traversal--- 层序遍历二叉树
- Binary Tree Zigzag Level Order Traversal,z字形遍历二叉树,得到每层访问的节点值。
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- Binary Tree Level Order Traversal 二叉树层次遍历
- leetcode---Binary Tree Zigzag Level Order Traversal---层次遍历
- LeetCode OJ 之 Binary Tree Level Order Traversal (二叉树的层次遍历)