宽度优先搜索套路
2017-06-07 16:14
127 查看
相比于我熟悉的深度优先搜索策略,宽度优先搜索代码如下。
这是层次遍历代码。
上面是层次遍历代码,下面是把bfs结果都存进一个vector里。就改被注释掉的代码,再加一行就可以了,基本没变。
下是用dfs实现层次遍历
其中,最重要的是传递了level这个参数,然后让每个节点在对应的vector中存储
就是这一句很重要
这是层次遍历代码。
/** * 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; queue<TreeNode*> q; q.push(root); while(!q.empty()){ vector<int> level; int size=q.size(); for(int i=0;i<size;i++){ TreeNode* t=q.front(); q.pop(); level.push_back(t->val); if(t->left){ q.push(t->left); } if(t->right){ q.push(t->right); } } result.push_back(level); } return result; } };
上面是层次遍历代码,下面是把bfs结果都存进一个vector里。就改被注释掉的代码,再加一行就可以了,基本没变。
/** * 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; queue<TreeNode*> q; q.push(root); while(!q.empty()){ //vector<int> level; int size=q.size(); for(int i=0;i<size;i++){ TreeNode* t=q.front(); q.pop(); //level.push_back(t->val); result.push_back(t->val); if(t->left){ q.push(t->left); } if(t->right){ q.push(t->right); } } //result.push_back(level); } return result; } };
下是用dfs实现层次遍历
vector<vector<int>> result; vector<vector<int>> levelOrderBottom(TreeNode* root) { if(!root) return result_final; bfs(root,0); return result; } void bfs(TreeNode* root,int level) { if(root==NULL) return; if(result.size()<level+1) result.push_back(vector<int>{}); result[level].push_back(root->val); bfs(root->left,level+1); bfs(root->right,level+1); }
其中,最重要的是传递了level这个参数,然后让每个节点在对应的vector中存储
就是这一句很重要
result[level].push_back(root->val);
相关文章推荐
- 2.1.5 宽度优先搜索(BFS) (《挑战程序设计竞赛》)
- 广度/宽度优先搜索(BFS)详解
- 宽度优先搜索(记录路径)
- 广度/宽度优先搜索(BFS)
- 十五数码之宽度优先搜索
- hrbust 移动(宽度优先搜索)
- 【算法入门】广度/宽度优先搜索(BFS)
- 蓝桥杯--穿越雷区(宽度优先搜索)
- 宽度优先搜索图
- USACO-Section2.1 Healthy Holsteins【宽度优先搜索/深度优先搜索】
- 宽度优先搜索(BFS):POJ3669--Meteor Shower
- FZU 1408 位图(宽度优先搜索)
- 宽度优先搜索
- 算法7-4:宽度优先搜索
- uva 816 有点复杂的BFS和宽度优先搜索模板 Abbott's Revenge
- 用linkedList实现队和宽度优先搜索
- poj 3278(bfs宽度优先搜索)
- 宽度优先搜索
- 【HZAU】1013 Yuchang and Zixiang ‘s maze 宽度优先搜索
- BFS宽度优先搜索思想