LeetCode: Binary Tree Level Order Traversal
来源:互联网 发布:4g转有线网络 编辑:程序博客网 时间:2024/06/05 23:56
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
/** * 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> > levelOrder(TreeNode *root) { vector<vector<int> > result; if(root == NULL) return result; vector<vector<TreeNode* > > container(2); int left = 0, right = 1; container[left].push_back(root); while(!container[left].empty()) { vector<int> cur; for(int i = 0; i < container[left].size(); i++) { if(container[left][i] == NULL) continue; container[right].push_back(container[left][i]->left); container[right].push_back(container[left][i]->right); cur.push_back(container[left][i]->val); } if(!cur.empty()) result.push_back(cur); cur.clear(); container[left].clear(); left = !left; right = !right; } return result; }};
Round 2:
/** * 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> > levelOrder(TreeNode *root) { vector<vector<int>> result; if(root == NULL) return result; int level = 0; vector<TreeNode *> bfs[2]; int flip = 0; bfs[flip].push_back(root); while(!bfs[flip].empty()) { vector<int> cur; for(int i = 0; i < bfs[flip].size(); i++) { cur.push_back(bfs[flip][i]->val); if(bfs[flip][i]->left) bfs[!flip].push_back(bfs[flip][i]->left); if(bfs[flip][i]->right) bfs[!flip].push_back(bfs[flip][i]->right); } result.push_back(cur); bfs[flip].clear(); flip = std::abs(1-flip); } return result; }};
Round 3:
class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int> > result;if(root == NULL)return result; vector<int> curLevel;vector<TreeNode*> nodes[2];nodes[0].push_back(root);curLevel.push_back(root->val);int index = 0;result.push_back(curLevel);while(!nodes[0].empty() || !nodes[1].empty()){curLevel.clear();for(int i = 0; i < nodes[index].size(); i++){if(nodes[index][i]->left){nodes[1-index].push_back(nodes[index][i]->left);curLevel.push_back(nodes[index][i]->left->val);}if(nodes[index][i]->right){nodes[1-index].push_back(nodes[index][i]->right);curLevel.push_back(nodes[index][i]->right->val);}}if(!curLevel.empty()) result.push_back(curLevel);nodes[index].clear();index = 1 - index;}return result; }};
0 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- Ubuntu 14.04 Nydus VPN配置
- 一个字符串中包含另一个字符串所有字符的最短子串
- SVN服务器搭建和使用(一)
- 金融相关术语和产品
- 【转】提高Unity中管理多个相机的效率www.maiziedu.com
- LeetCode: Binary Tree Level Order Traversal
- 奇迹Mu分析 - 魔盒刷钱实现
- C语言字符串使用注意事项
- 安卓开源框架积累笔记
- Swifty methods
- 读取STM8 Unique ID registers
- 星巴克的胜利
- Silverlight+WCF+Sql Server
- 工作笔记之-svn 常用技巧及命令总结