玩轉演算法面試-佇列Queue
阿新 • • 發佈:2019-01-26
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
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>> res;
if( root == NULL)
return res;
// 合併兩個變數 https://www.cnblogs.com/lvchaoshun/p/7769003.htmls
queue<pair<TreeNode*,int> > q;
q.push(make_pair( root,0))
while( !q.empty()){
// 取出第一個元素
TreeNode* node = q.front().first;
// 層級
int level = q.front().second;
q.pop();
// 如果等於,說明res還沒有存在level這一層(索引問題)
if(level == res.size())
//將動態陣列加入到res容器的最後一位
res.push_back(vector<int>());
res[level].push_back(node->val);
if( node->left)
// make_pair 建立陣列對
q.push(make_pair(node->left,level + 1));
if(node->right)
q.push(make_pair(node->right,level + 1));
}
return res;
}
};
int main() {
return 0;
}
BFS和圖的最短路徑
- 沒有解怎麼辦? 不可能,因為1也是完全平方和
- 直覺-》貪心演算法? 從最大的完全平方和開始,依次向下查詢越來越小的完全平方和
- 12 = 9 + 1 + 1 + 1
- 12 = 4 + 4 + 4
- 所以貪心演算法是不可取的