leetcode - Binary Tree Level Order Traversal
来源:互联网 发布:手机淘宝卡 编辑:程序博客网 时间:2024/04/29 12:49
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]]
confused what "{1,#,2,3}"
means?
struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public: std::vector<std::vector<int> > levelOrder(TreeNode *root){ //第一种解法,利用队列BFS分层遍历二叉树std::vector<std::vector<int>> vec; if(root == NULL) return vec;std::queue<TreeNode*> Q;Q.push(root);int cnt = 1;std::vector<int> tmp;while(!Q.empty()){tmp.clear();int level = 0;for(int i = 0; i < cnt; i++){root = Q.front();Q.pop();tmp.push_back(root->val);if(root->left != NULL) Q.push(root->left),level++;if(root->right != NULL) Q.push(root->right),level++;}cnt = level;vec.push_back(tmp);}return vec; }};
class Solution {public: std::vector<std::vector<int> > levelOrder(TreeNode *root){ //第二种方法也是利用队列的方法来做的,但是,其实数据结构的实现是vector,觉得这种方法更简便一些.std::vector<std::vector<int>> result;if(root == NULL) return result;std::vector<int> vec;std::vector<TreeNode*> node;node.push_back(root);int cur = 0,last = 1;while(cur < node.size()){last = node.size();while(cur < last){vec.push_back(node[cur]->val);if(node[cur]->left != NULL) node.push_back(node[cur]->left);if(node[cur]->right != NULL) node.push_back(node[cur]->right);cur++;}result.push_back(vec);vec.clear();}return result; }};
class Solution {public: std::vector<std::vector<int> > levelOrder(TreeNode *root){ //第三种解法,dfs分层遍历二叉树dfs(root,0);return result; }private:std::vector<std::vector<int>> result;void dfs(TreeNode *root,int level){if(root == NULL) return;if(level == result.size()){std::vector<int> vec;result.push_back(vec);}result[level].push_back(root->val);dfs(root->left,level+1);dfs(root->right,level+1);}};
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
- Android笔记_02
- Android自定义View的实现方法,带你一步步深入了解View(四)
- NYOJ题目460 项链(矩阵相乘最大步数)
- MapReduce初级经典案例实现
- 用Delphi创建各种文件
- leetcode - Binary Tree Level Order Traversal
- 吴超Hadoop7天视频教程
- 重定向与请求转发的区别
- 利用apache的Commons-fileupload和Ajax实现文件上传进度条
- Android与PHP服务器交互
- JProfiler_SN 注册码
- 安卓系统自带的样式(android:theme)解析
- C\C++ 文件操作
- Qt中Ui名字空间以及setupUi函数的原理和实现