Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:微信端口是什么 编辑:程序博客网 时间:2024/05/16 19:41
1.题目
给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)
给出一棵二叉树 {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
返回其锯齿形的层次遍历为:
[ [3], [20,9], [15,7]]
2.算法
同时维护新旧两个栈,一个来读取,一个存储下一层结点,当为偶数层时,从左孩子存储,当为奇数层时,从右孩子存储,
public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { // write your code here ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if (root == null) { return res; } LinkedList<TreeNode> stack = new LinkedList<TreeNode>(); ArrayList<Integer> item = new ArrayList<Integer>(); item.add(root.val); res.add(item); stack.push(root); int level = 1; while (!stack.isEmpty()) { LinkedList<TreeNode> newStack = new LinkedList<TreeNode>(); item = new ArrayList<Integer>(); while (!stack.isEmpty()) { TreeNode node = stack.pop(); if (level % 2 == 0) { if (node.left != null) { newStack.push(node.left); item.add(node.left.val); } if (node.right != null) { newStack.push(node.right); item.add(node.right.val); } } else { if (node.right != null) { newStack.push(node.right); item.add(node.right.val); } if (node.left != null) { newStack.push(node.left); item.add(node.left.val); } } } level++; if (item.size() > 0) { res.add(item); } stack = newStack; } return res; }
原帖地址
http://blog.csdn.net/linhuanmars/article/details/24509105
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
- Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 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
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- MyISAM 表锁解决方案
- Integer与int的区别
- 值类型、引用类型和string详解之一(共三)
- Ubuntu 下无线网卡RTL8723BE不稳定的解决办法
- Makefile:588: recipe for target '.build_release/cuda/src/caffe/layers/softmax_loss_layer.o' failed
- Binary Tree Zigzag Level Order Traversal
- 作用域public,private,protected,以及不写时的区别
- AngularJS学习之二:配置本地开发环境
- 网络编程之套接字TCP
- iOS每日一记之---------- 图像 放大 居中 裁剪
- 面向对象的特征
- krpano元素之krpano 根标签
- vsftp出现/usr/bin/ld: cannot find -lcap
- HashMap和Hashtable