

相对于 104.二叉树的最大深度 ,本题还也可以使用层序遍历的方式来解决,思路是一样的。
需要注意的是,只有当左右孩子都为空的时候,才说明遍历的最低点了。如果其中一个孩子为空则不是最低点
cpp
class Solution {
public:
int minDepth(TreeNode* root) {
// 创建队列用于BFS(广度优先搜索)层序遍历
queue<TreeNode*> que;
// 如果树为空,直接返回深度0
if(root==NULL) return 0;
// 将根节点加入队列
que.push(root);
// 初始化深度为0
int depth = 0;
// 当队列不为空时继续循环
while(!que.empty()){
// 记录当前层的节点数
int size = que.size();
// 深度加1,表示进入新的一层
depth++;
// 遍历当前层的所有节点
for(int i=0 ; i<size ; i++){
// 从队列中取出节点
TreeNode* node = que.front();
que.pop();
// 如果当前节点是叶子节点(没有左右子节点)
if(node->left==NULL && node->right==NULL){
// 找到第一个叶子节点,返回当前深度(最小深度)
return depth;
}
else{
// 如果不是叶子节点,将存在的子节点加入队列
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
}
}
// 返回深度(正常情况下不会执行到这里)
return depth;
}
};