-----QUESTION-----
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-----
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
int minDepth(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(!root) return 0;
min_depth = INT_MAX;
dfs(root,1);
return min_depth;
}
void dfs(TreeNode* node, int depth){
if(node->left)
{
dfs(node->left,depth+1);
}
if(node->right)
{
dfs(node->right,depth+1);
}
if(!node->left && !node->right)
{
if(depth < min_depth)
{
min_depth = depth;
}
}
}
private:
int min_depth;
};