leetcode 每日一题 107. Binary Tree Level Order Traversal II
来源:互联网 发布:matlab矩阵求转置 编辑:程序博客网 时间:2024/06/10 19:39
此题是上一道题的变体···最简单的方法就是把插入的方式变一变就可以了,或者把push_back函数改成insert
或者在最后reverse一下 都可以 但是奇怪的是,时间复杂度很高,竟然要64ms
后来看到discuss中一个8ms的程序 觉得差不多 并没什么区别 代码如下:
https://leetcode.com/discuss/92987/share-c-solution-8ms-easy-to-understand
class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> vv; std::queue<TreeNode*> q; TreeNode* tn; int n; if(root) q.push(root); while(!q.empty()) { n = q.size(); std::vector<int> v; while(n) { tn = q.front(); q.pop(); v.push_back(tn->val); if(tn->left) q.push(tn->left); if(tn->right) q.push(tn->right); n--; } vv.push_back(v); } reverse(vv.begin(),vv.end()); return vv; }};
我发现用了reverse之后,时间复杂度由64猛减少到4ms 超过很多人···
代码中有注释,嘿嘿
class Solution {public: vector<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> res; vector<int> level; TreeNode* node; if(root==NULL) return res; //注意root为空的时候返回的类型也是res这种 queue<TreeNode*> q; int currlev=1; int nextlev=0; q.push(root); while(!q.empty()){ node=q.front(); currlev--; q.pop(); level.push_back(node->val); if(node->left){ q.push(node->left); nextlev++; } if(node->right){ q.push(node->right); nextlev++; } if(currlev==0){ //res.insert(res.begin(),level); 这句话会让程序明显减慢 res.push_back(level); currlev=nextlev; nextlev=0; level.clear();//level要清空 } } reverse(res.begin(),res.end()); //这句话起了翻转作用 return res; }};
0 0
- leetcode 每日一题 107. Binary Tree Level Order Traversal II
- leetcode 每日一题 102. Binary Tree Level Order Traversal
- [LeetCode]102. Binary Tree Level Order Traversal&107. Binary Tree Level Order Traversal II
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- 收到用980C币在C商城买的CSDN徽标保温杯
- 定位详解、层级、滤镜遮罩笔记
- 一个前端开发者的自我修养
- gsoap namespaces命名空间定义
- 再探极光推送
- leetcode 每日一题 107. Binary Tree Level Order Traversal II
- 数组元素的赋值和遍历数组
- LeetCode之338—-Counting Bits
- hdu 1421(dp)
- 利用TouchesBegan解决页面内 触摸 某个视图以外的处理的情况
- Spring--IOC
- 懒马效应
- java中静态代码块的用法 static用法详解
- 【leetcode】Array——Best Time to Buy and Sell Stock I/II/III