LeetCode | Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:语音软件 编辑:程序博客网 时间:2024/06/03 14:55
题目:
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.
思路:
类似http://blog.csdn.net/lanxu_yy/article/details/11820189。只是在输出最终结果前需要将部分level反序。
代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int> > zigzagLevelOrder(TreeNode *root) { TreeNode * q1[10000]; bool q2[10000]; int begin=0; int end=0; if(root == NULL) { vector<vector<int> > v; return v; } else { vector<vector<int> > v; q1[end] = root; q2[end++] = true; bool level = true; bool cur = true; vector<int> * tmp = new vector<int>(); while(begin!=end) { TreeNode * p = q1[begin]; cur = q2[begin++]; if(cur != level) { if(!level) { for(int k=0;k<tmp->size()/2;k++) { int t = tmp->at(k); tmp->at(k) = tmp->at(tmp->size()-1-k); tmp->at(tmp->size()-1-k) = t; } v.push_back(*tmp); } else { v.push_back(*tmp); } delete tmp; tmp = new vector<int>(); level = !level; } if(cur == level) { if(p->left != NULL) { q1[end] = p->left; q2[end++] = !cur; } if(p->right != NULL) { q1[end] = p->right; q2[end++] = !cur; } tmp->push_back(p->val); } } if(!level) { for(int k=0;k<tmp->size()/2;k++) { int t = tmp->at(k); tmp->at(k) = tmp->at(tmp->size()-1-k); tmp->at(tmp->size()-1-k) = t; } v.push_back(*tmp); } else { v.push_back(*tmp); } return v; } }};
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
- ARM 指令集版本和ARM 版本
- 博主报道
- mysql中获取一天、一周、一月时间数据的各种sql语句写法
- 圣诞快乐
- MFC中的菜单操作
- LeetCode | Binary Tree Zigzag Level Order Traversal
- Fragment中使用ViewFlipper在严格模式下抛出android.app.IntentReceiverLeaked
- 如何做好网站优化,seo小白必看
- Hadoop 和Mongodb是否能用于存储实时视频数据
- framebuffer驱动开发二
- 寻找凸包 convex hull(二)——Graham_Scan
- IEnumerable和IEnumerator 详解
- 对花两无语,物我两相忘
- modelsim10.1a的破解