Binary Tree Zigzag Level Order Traversal
2015-06-19 23:33
274 查看
Description:
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
return its zigzag level order traversal as:
Code:
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:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) { deque<TreeNode*>a; deque<TreeNode*>b; if (root) a.push_back(root); TreeNode*p = NULL; vector<vector<int>> result; while (!a.empty() || !b.empty()) { vector<int>temp; if (!a.empty() ) { while (!a.empty() ) { p = a.front(); a.pop_front(); temp.push_back(p->val); if (p->left) b.push_back(p->left); if (p->right) b.push_back(p->right); } result.push_back(temp); } else { while (!b.empty()) { p = b.front(); b.pop_front(); temp.push_back(p->val); if (p->left) a.push_back(p->left); if (p->right) a.push_back(p->right); } result.push_back(temp); } } for (int i = 1; i < result.size(); i+=2) { reverse(result[i].begin(),result[i].end()); } return result; }
相关文章推荐
- GUI--Swing组件(2)
- Centos 6.5系统更改yum源为163
- 阅读笔记之《梦断代码》一
- 因特网
- 搬寝室
- Visual Studio 2012本身都是已经支持Jquery/Javascript智能提示
- Android中常常使用shape来定义控件的一些显示属性
- C语言日志处理
- 广域网优化
- Binary Tree Level Order Traversal
- java单例模式的讨论
- 补第一阶段冲刺站立会议3(应发表日期5月15日)
- 关于数列1,1,2,3,5,8,13,21,34..用C#语言编程求第n项为?
- POJ 1155 树形DP
- 使用ScrollView实现下拉刷新(一)
- linux权限
- Uniform Generator
- CODE[VS] 1214 线段覆盖
- AES Test vectors
- CODE[VS] 1214 线段覆盖