深度:根节点到叶子结点的距离
最小深度分为以下三种情况:
(1)该结点没有儿子结点
(2)该结点有一个儿子结点
(3)该结点有两个儿子结点
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int minDepth(struct TreeNode* root) {
if (root == NULL)
return 0;
else if (root->left == NULL && root->right == NULL)
return 1;
int depthLeft = minDepth(root->left);
int depthRight = minDepth(root->right);
if (depthLeft == 0)
return 1+depthRight;
else if (depthRight == 0)
return 1+depthLeft;
else
return 1+(depthLeft>depthRight?depthRight:depthLeft);
}