// 此代码可以再更改,参看视频内容
/**
* 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>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
if(!root)
return result;
int toBePrinted = 1;
int nextLevel = 0;
TreeNode* pCur = root;
queue<TreeNode*> q;
q.push(root);
vector<int> v;
while(!q.empty()){
pCur = q.front();
q.pop();
v.push_back(pCur->val);
--toBePrinted;
if(pCur->left){
q.push(pCur->left);
++nextLevel;
}
if(pCur->right){
q.push(pCur->right);
++nextLevel;
}
if(!toBePrinted){
result.push_back(v);
v.clear();
toBePrinted = nextLevel;
nextLevel = 0;
}
}
return result;
}
};
BFS和图的最短路径
279. Perfect Squares
之前用动态规划做过
用图的最短路径解决一下
优先队列的底层实现:堆
堆的底层实现:白板编程
priority_queue<int> 默认最大堆
priority_queue<int, vector<int>, greater<int>> // 最小堆
priority_queue<int, vector<int>, compare>