[LeetCode]Binary Tree Level Order Traversal
来源:互联网 发布:perl json 格式化输出 编辑:程序博客网 时间:2024/04/28 10:15
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {//BFS is always work for the level order traverse of a tree//all we need is add some additional information, to solve the specific problem of level order typepublic:vector<vector<int>> LevelOrder_BFS(TreeNode* root){vector<vector<int>> ans;if(!root)//put the null tree judge here will be more neetreturn ans;queue<pair<TreeNode*, int>> q;int stepNow = 0;q.push(make_pair(root, stepNow));vector<int> curLevel;while(!q.empty()){TreeNode* curNode = q.front().first;int curStep = q.front().second;q.pop();if(curStep != stepNow){ans.push_back(curLevel);curLevel.clear();stepNow = curStep;}curLevel.push_back(curNode->val);if(curNode->left)q.push(make_pair(curNode->left, curStep+1));if(curNode->right)q.push(make_pair(curNode->right, curStep+1));}ans.push_back(curLevel);//note: we should remember the last level herereturn ans;} vector<vector<int> > levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() functionreturn LevelOrder_BFS(root); }};
second time
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: struct Node { TreeNode* treeNode; int level; Node(TreeNode* _treeNode = NULL, int _level = 0):treeNode(_treeNode), level(_level){}; }; vector<vector<int> > levelOrder(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL) return vector<vector<int> >(); queue<Node> nodeQ; nodeQ.push(Node(root, 1)); int prevLevel = 0; vector<int> curLevelAns; vector<vector<int> > allLevelAns; while(!nodeQ.empty()) { TreeNode* curNode = nodeQ.front().treeNode; int curLevel = nodeQ.front().level; nodeQ.pop(); if(curNode == NULL) continue; if(curLevel != prevLevel) { if(prevLevel != 0) allLevelAns.push_back(curLevelAns); curLevelAns.clear(); } prevLevel = curLevel; curLevelAns.push_back(curNode->val); nodeQ.push(Node(curNode->left, curLevel+1)); nodeQ.push(Node(curNode->right, curLevel+1)); } allLevelAns.push_back(curLevelAns); return allLevelAns; }};
- 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
- [LeetCode]Binary Tree Inorder Traversal
- 设置时钟
- 大数据:查找不重复的整数
- MongoDB中修改集合中的某个元素的值
- cygwin安装 hbase 报错:ClassNotFoundException: org.apache.zookeeper.KeeperException
- [LeetCode]Binary Tree Level Order Traversal
- MFC设置对话框大小
- android技巧01:Preferencescreen中利用intent跳转activity
- hdu2825——ac自动机,DP
- 基础总结篇之二:Activity的四种launchMode
- [LeetCode]Binary Tree Level Order Traversal II
- VB.NET 数据表(datatable)之间的数据行复制
- 回环地址
- test.jpdl.xml文件的分析