Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:mac air 使用教程 编辑:程序博客网 时间:2024/06/06 02:15
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.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
. Solution:
/** * Definition for a binary tree node. * 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) { vector<vector<int> > res; bfs(root, res); return res; } void bfs(TreeNode *root, vector<vector<int> > &res) { if(!root) return ; queue<TreeNode *> q; q.push(root); int count = 1, level = 1; vector<int> v; while(!q.empty()) { TreeNode *tn = q.front(); q.pop(); v.push_back(tn->val); if(tn->left) q.push(tn->left); if(tn->right) q.push(tn->right); if(!--count) { count = q.size(); if(level % 2 == 0) reverse(v.begin(), v.end()); res.push_back(v); ++level; v.clear(); } } }};
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
- Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- 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
- Binary Tree Zigzag Level Order Traversal
- Binary Tree Zigzag Level Order Traversal
- Bluetooth 分析Enable流程
- 如何在OpenStack Nova v2.1 API 中增加或变更一个API接口
- Jedis分片连接池(分布式)
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- iOS-响应者链条
- Binary Tree Zigzag Level Order Traversal
- Redis 客户端Jedis使用(一)
- 欢迎界面仅首次打开时出现,即数据持久化的应用
- MongoDB—细说高级操作
- Linux性能分析和工具)
- PHP下载封装
- LeetCode_OJ【180】Consecutive Numbers
- 手机界面设计中12种常用布局
- uva 473 dp