LeetCode - Binary Tree Zigzag Level Order Traversal
2016-01-10 10:44
435 查看
题目:
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:
思路:
采用Binary Tree Level Order Traversal的方法,然后对第二行、第四行进行reverse。
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] ]
思路:
采用Binary Tree Level Order Traversal的方法,然后对第二行、第四行进行reverse。
package treetraversal; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class BinaryTreeZigzagLevelOrderTraversal { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); //List<Integer> record = new ArrayList<Integer>(); levelOrderTraversal(res, root, 0); for (int i = 0; i < res.size(); ++i) { if (i % 2 == 1) { Collections.reverse(res.get(i)); } } return res; } private void levelOrderTraversal(List<List<Integer>> res, TreeNode root, int k) { if (root == null) return; if (res.size() < k + 1) { List<Integer> record = new ArrayList<Integer>(); record.add(root.val); res.add(record); } else { res.get(k).add(root.val); } levelOrderTraversal(res, root.left, k + 1); levelOrderTraversal(res, root.right, k + 1); } }
相关文章推荐
- Activity启动过程源码分析
- 提示音量增加事件
- Linux从程序到进程
- centos install(160112更新)
- oracle 解锁用户和修改密码
- 远程桌面问题
- 通过SecureCRT访问亚马逊Amazon EC2主机
- 最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
- 关于Pascal和二项式系数
- 高阶函数应用
- c语言二进制文件加密
- JPA调用存储过程的方法
- 【git】删除某个文件的所有历史记录,批量删除远程分支
- C++与C的输出对齐
- Linux 技巧之 Grub 超实用技巧
- Python 虚拟环境Virtualenv
- Huffman编码与译码
- 模式匹配
- 屏蔽后退键
- [LeetCode] 129. Sum Root to Leaf Numbers 解题思路