111.二叉树的最小深度
日期:2022/7/18
题目描述:给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
**说明:**叶子节点是指没有子节点的节点。
示例:
输入:root = [3,9,20,null,null,15,7]
输出:2
输入:root = [2,null,3,null,4,null,5,null,6]
输出:5
思路:
分类:root==nullptr的情况,叶结点的情况,左右其中一个结点不存在的情况,左右结点都存在的情况
代码+解析:
class Solution {
public:
int minDepth(TreeNode* root) {
if(root == nullptr) return 0;
if(root->left == nullptr && root->right == nullptr) return 1; //叶结点
int left = minDepth(root->left);
int right = minDepth(root->right);
if(left == 0 || right == 0) return left + right + 1; //其中一个结点为空
return min(left,right) + 1; //左右结点都不为空时
}
};