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.
思路:如果根结点为空,则为0;如果根结点不为空,且左右子树都存在,则计算它左子树的最小深度和右子树的最小深度,最终结果取两者中小的那个再加1;如果根结点不为空,左子树不空,但右子树空,则最终结果为左子树的最小深度+1;同理可得当右子树不为空,但左子树为空的结果。最后一种分类是当根结点不为空,但其左右子树都为零,则结果为1;
class Solution {
public:
int minDepth(TreeNode *root)
{
if(!root)
return 0;
else if(root->left && !root->right)
return minDepth(root->left) + 1;
else if(root->right && !root->left)
return minDepth(root->right) + 1;
else if(root->left && root->right)
{
int l = minDepth(root->left);
int r = minDepth(root->right);
return (l < r ? l : r) + 1;
}
else
return 1;
}
};