Discription:
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.
Solution:
自己比较cuo的解法:
void minDepth(TreeNode* root, int depth,int &result)
{
depth += 1;
if (!root->left && !root->right){
if (depth < result)
result = depth;
}
if (root->left)
minDepth(root->left, depth, result);
if (root->right)
minDepth(root->right, depth, result);
depth -= 1;
}
int minDepth(TreeNode* root) {
if (!root) return 0;
int result = INT_MAX;
minDepth(root, 0, result);
return result;
}
Leetcode论坛里比较好的解法:
int minDepth(TreeNode* root) {
if (!root) return 0;
int L = minDepth(root->left), R = minDepth(root->right);
return 1 + (min(L, R) ? min(L, R) : max(L, R));
}
int minDepth(TreeNode* root) {
if (!root) return 0;
int L = minDepth(root->left), R = minDepth(root->right);
return 1 + (L && R ? min(L, R) : max(L, R));
}
GitHub-LeetCode:
https://github.com/wenwu313/LeetCode