题目要求
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.
解题思路
找二叉树的最短路径。
和我之前做的104题找最长路径我的做法稍有不同。
当左右子树均不存在时,返回1;
当左子树不存在时,返回1+minDepth(右子树);
当右子树不存在时,返回1+minDepth(左子树);
当左右子树均存在时,返回二者minDepth较小的一个。
复杂度分析
DFS,时间复杂度为O(N)。
代码如下:
class Solution {
public:
int minDepth(TreeNode* root) {
if (root==NULL) {
return 0;
}
else if(root->left==NULL&&root->right==NULL){
return 1;
}
else if (root->left==NULL) {
return 1+minDepth(root->right);
}
else if(root->right==NULL){
return 1+minDepth(root->left);
}
else
return min(1+minDepth(root->left),1+minDepth(root->right));
};
};