Leetcode: Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:台湾 大陆电视剧 知乎 编辑:程序博客网 时间:2024/06/06 05:05
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]]
Similar to Leetcode: Binary Tree Level Order Traversal, but use two stacks to realize zigzag level order traversal. One stack to store nodes at current level, the other to store nodes at the next level. Use a boolean parameter to determine the traverse direction.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if (root == null) { return res; } Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(root); boolean isLeftToRight = false; while (!stack.empty()) { ArrayList<Integer> level = new ArrayList<Integer>(); Stack<TreeNode> next = new Stack<TreeNode>(); int size = stack.size(); for (int i = 0; i < size; i++) { TreeNode node = stack.pop(); level.add(node.val); if (isLeftToRight) { if (node.right != null) { next.push(node.right); } if (node.left != null) { next.push(node.left); } } else { if (node.left != null) { next.push(node.left); } if (node.right != null) { next.push(node.right); } } } isLeftToRight = !isLeftToRight; res.add(level); stack = next; } return res; }}
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
- XML 应用
- 今天用curl在网站上抓图,出现请求超时,还有就是访问汉字和带空格的url的注意事项
- AIR 15.0 ADT 打包 compile-abc.exe 报错
- labview 隐藏控件
- PdfToSwf并显示
- Leetcode: Binary Tree Zigzag Level Order Traversal
- 基础补充笔记
- 第十周项目4 拓展 输入评委人数,给分错误重输,多次运行程序
- 【脚本】Linux Shell真是无所不能之split命令
- Linux系统下CPU频率的调整
- Android Bluetooth Low Energy(Android低功耗蓝牙)
- 【JavaScript】使用setInterval()函数作简单的轮询操作
- Unicode(UTF16)文件读写终极方案---用C++标准的字节流读取,转化为宽字符(wchar_t),再以字节流写入
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量