时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:143026
本题知识点: 树
题目描述
求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
class Solution {
public:
int run(TreeNode *root) {
if(root==NULL)return 0;
if(root->left==NULL&&root->right==NULL)return 1;
queue<TreeNode *> q;
q.push(root);
int ans=1;
while(!q.empty()){
int size=q.size();
//用一个队列去将每一层树的节点分开遍历,就每次先算队列的长度,也就是每一层的节点数,然后在遍历。防止一层中边遍历队列中节点边增加,如果用队列为空为判断条件是不行的,因此下面用for循环
for(int i=0;i<size;i++){
TreeNode *t=q.front();
q.pop();
if(t->left==NULL&&t->right==NULL)return ans;
if(t->left!=NULL){
q.push(t->left);
}
if(t->right!=NULL){
q.push(t->right);
}
}
ans++;
}
return ans;
}
};