leetcode
来源:互联网 发布:多级代理管理系统源码 编辑:程序博客网 时间:2024/06/06 08:30
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7]]
Solution1:
public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<>(); levelOrder(root, result, 0); for (int i = 1; i < result.size(); i += 2) { Collections.reverse(result.get(i)); } return result; } private void levelOrder(TreeNode root, List<List<Integer>> result, int level) { if (root == null) return; if (result.size() <= level || result.get(level) == null) result.add(level, new ArrayList<>()); result.get(level).add(root.val); levelOrder(root.left, result, level + 1); levelOrder(root.right, result, level + 1); }
Solution2:
public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<>(); zigzagLevelOrder(root, result, 0); return result; } private void zigzagLevelOrder(TreeNode root, List<List<Integer>> result, int level) { if (root == null) return; if (result.size() <= level || result.get(level) == null) result.add(level, new LinkedList<>()); List<Integer> list = result.get(level); if (level % 2 == 0) { list.add(root.val); } else { list.add(0, root.val); } zigzagLevelOrder(root.left, result, level + 1); zigzagLevelOrder(root.right, result, level + 1); }
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- String、StringBuffer与StringBuilder之间区别
- leetcode
- SVN冲突解决方法
- WebView之软键盘弹起时遮住输入框解决方法
- Java<类型自动转化>
- leetcode
- jvisualvm结合jstatd进行远程监控
- 医院随访系统
- [shell]递归求阶乘
- 牛顿迭代法(Newton's Method)
- leetcode
- java实现redis缓存技术
- Linux内核分析之简析system_call中断处理过程
- 流式布局FlowLayout以及动态添加Item的实现