Leetcode: binary-tree-zigzag-level-order-traversal
来源:互联网 发布:淘宝视频课程下载 编辑:程序博客网 时间:2024/05/17 23:48
题目:
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]]
confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.
分析:
本题是树的层次遍历的一个变体,目的是希望在树层次遍历的基础上,偶数层逆序遍历。因此需要一个辅助队列进行树结点的存储,然后将每一层的结点值保存在一个ArrayList中,判断是否是偶数层,若是偶数层则将ArrayList中的元素逆序存储。
具体的代码如下:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.LinkedList;import java.util.ArrayList;import java.util.Collections;public class Solution { public ArrayList<ArrayList<Integer> > zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer> > ans = new ArrayList<ArrayList<Integer> >(); if (root == null) return ans; LinkedList<TreeNode> q = new LinkedList<TreeNode>(); q.add(root); boolean flag = true; while(!q.isEmpty()){ int len = q.size(); ArrayList<Integer> tmp = new ArrayList<Integer>(); while(len > 0){ TreeNode ln = q.poll(); if (ln.left != null){ q.add(ln.left); } if (ln.right != null){ q.add(ln.right); } tmp.add(ln.val); len--; } if (flag == true){ ans.add(tmp); flag = false; } else{ Collections.reverse(tmp); ans.add(tmp); flag = true; } } return ans; }}
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]]
confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.
- 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
- Android高德地图输入地址利用正地理编码获取经纬度
- 摔跤吧!爸爸 百度云资源
- Support vector Machines(SVM)
- SQL 实现两张表通过一张表来更新或插入
- HTTP状态码
- Leetcode: binary-tree-zigzag-level-order-traversal
- jquery正则匹配url地址和邮件地址的实例
- js-网站广告图片漂浮
- qt多种字体格式并用
- Ext.Panel
- vue-router 2.0 常用基础知识点之导航钩子
- 4、jQuery插件之dragdrop拖放插件
- 查找hive中的视图
- iOS 之Failed to chmod