【Leetcode】Binary Tree Zigzag Level Order Traversal (Tree Traversal)
来源:互联网 发布:php生成word文档 编辑:程序博客网 时间:2024/06/06 17:01
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]]
这道题由于每一次要等到上次的栈全部情况再进栈,所以需要两个栈来维护
奇数层维护是先左后右
偶数层维护是先右后左
代码参考Code_Ganker
public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();if (root == null)return result;LinkedList<TreeNode> stack = new LinkedList<TreeNode>();ArrayList<Integer> value = new ArrayList<Integer>();value.add(root.val);result.add(value);stack.push(root);int level = 1;while (!stack.isEmpty()) {LinkedList<TreeNode> newStack = new LinkedList<TreeNode>();value = new ArrayList<Integer>();while (!stack.isEmpty()) {TreeNode cur = stack.pop();if (level % 2 == 0) {if (cur.left != null) {newStack.push(cur.left);value.add(cur.left.val);}if (cur.right != null) {newStack.push(cur.right);value.add(cur.right.val);}} else {if (cur.right != null) {newStack.push(cur.right);value.add(cur.right.val);}if (cur.left != null) {newStack.push(cur.left);value.add(cur.left.val);}}}level++;if (value.size() > 0)result.add(value);stack = newStack;}return result;}
0 0
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [Leetcode]Binary Tree Zigzag Level Order Traversal
- [leetcode]Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal
- [leetcode] Binary Tree Zigzag Level Order Traversal
- LeetCode - Binary Tree Zigzag Level Order Traversal
- LeetCode:Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- cocos编译出错大全集
- 【Leetcode】Binary Tree Level Order Traversal II (Tree Traversal)
- UVA 10815 Andy's First Dictionary(字符处理)
- UVA 644 Immediate Decodability (字符处理)
- 如何解决ubuntu下用wine报-cant-find-mfc42-dll问题
- 【Leetcode】Binary Tree Zigzag Level Order Traversal (Tree Traversal)
- ubuntu 安装wine
- 初尝Android WebService之调用温度转换服务
- 【Leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?
- 【新手入门】Oozie workflow如何在action之间传递参数
- 我的读书笔记总结格式
- <佛陀与想太多的猪>读书笔记
- 2014年各种编程语言的薪资和市场需求