LeetCode二刷
111. Minimum Depth of Binary Tree
第一次写的时候用的是recursive版本,现在我们使用bfs版本.
注意对树来说,bfs有个很明显的特点,即q.size()
为该层层次遍历的结果,为每一层的结点数,因为只要每次迭代对该层循环处理即可,即for(int i=q.size()-1;i>=0;i--)
。
/**
* 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 minDepth(TreeNode* root) {
// bfs
if(!root)
return 0;
queue<TreeNode*> q;
q.push(root);
int ct=0;
while(!q.empty()){
ct++; //层数
// 遍历每一层,当前q.size()即为该层的元素个数
for(int i=q.size()-1;i>=0;i--){
TreeNode* x=q.front();q.pop();
if(x->left==NULL&x->right==NULL) //遇到叶子则退出
return ct;
if(x->left)
q.push(x->left);
if(x->right)
q.push(x->right);
}
}
return ct;
}
};