【问题】如题目
【code】
int minDepthHelper(TreeNode *root, int curDepth, int &minDepth) {
if (root->left == NULL && root->right == NULL) {
minDepth = minDepth < curDepth ? minDepth : curDepth;
return 0;
}
if (root->left != NULL)
minDepthHelper(root->left, curDepth + 1, minDepth);
if (root->right != NULL)
minDepthHelper(root->right, curDepth + 1, minDepth);
}
int minDepth(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (root == NULL)
return 0;
int curDepth = 1;
int minDepth = INT_MAX;
minDepthHelper(root, curDepth, minDepth);
return minDepth;
}
【扩展】求最大深度
int maxDepthHelper(TreeNode *root, int curDepth, int &maxDepth) {
if (root->left == NULL && root->right == NULL) {
maxDepth = maxDepth > curDepth ? maxDepth : curDepth;
return 0;
}
if (root->left != NULL)
maxDepthHelper(root->left, curDepth + 1, maxDepth);
if (root->right != NULL)
maxDepthHelper(root->right, curDepth + 1, maxDepth);
}
int maxDepth(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (root == NULL)
return 0;
int curDepth = 1;
int maxDepth = 0;
maxDepthHelper(root, curDepth, maxDepth);
return maxDepth;
}