【leetcode】Binary Tree Zigzag Level Order Traversal
2015-06-06 22:47
417 查看
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.
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.
class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int> >res; if(root==NULL) return res; vector<int> level; queue<TreeNode* > q; q.push(root); int cnt=1; int curcnt=0; bool order=true; while(!q.empty()) { TreeNode *node=q.front(); q.pop(); level.push_back(node->val); if(node->left) { q.push(node->left); curcnt++; } if(node->right) { q.push(node->right); curcnt++; } cnt--; if(cnt==0) { if(order) { res.push_back(level); }else{ reverse(level.begin(),level.end()); res.push_back(level); } order=!order; level.clear(); cnt=curcnt; curcnt=0; } } return res; } };
相关文章推荐
- 恢复删除文件的方法
- 恢复删除文件的方法
- 设计类图
- 薛定谔的猫
- 关注PHPthinking官网微信公众号——红包来袭
- 聚类算法之混合高斯模型
- Binary Tree Upside Down
- ContentProvider和SQLite数据库
- 安卓5.0手机开启USB调试
- POJ 3169 Layout
- HDU 1058 Humble Numbers--DP--(计数器技巧)
- C++ 容器及选用总结
- 使用pyinstaller打包python为exe文件
- sql server 分页存储过程
- Oracle编译器警告
- 20150606
- dequeueReusableCellWithIdentifier:
- 输入输出--write
- 黑马程序员——多线程
- less中的部分语法详解