谁能想到我一个快大三的老学姐,连基础算法都不会 刷了题广度优先的超简单算法题,但我还是看了题解区大佬们的题解才写对。贴题:
图片截自LeetCode
emmm,好像也没什么好总结的,BFS的算法思想就是利用队列,本题大致步骤就是
- 建立空队列q
- 判断源点,不为空则入队列
- 取出队首节点,找其左右节点,不为空则入队列
- 删除队首节点
- 二叉树深度加一
- 重复3-5,直到遍历完整棵树
代码如下:
/**
* 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:
int maxDepth(TreeNode* root) {
queue<TreeNode*> q;
int depth=0;
if(root!=NULL)
q.push(root);
while(!q.empty())
{
for(int i=q.size()-1;i>=0;i--)
{
TreeNode* temp=q.front();
q.pop();
if(temp->left)
q.push(temp->left);
if(temp->right)
q.push(temp->right);
}
depth++;
}
return depth;
}
};