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.
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: int minDepth(TreeNode *root) { 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; };