/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
/*
求二叉树的最小深度
*/
class Solution {
public:
int res = INT_MAX;
void dfs(TreeNode *root,int depth){
if(!root||depth>=res) return;//剪枝,当前搜索深度大于最小值就不要继续往下搜了
if(!root->left &&!root->right){
res = min(res,depth+1);
return ;
}
dfs(root->left,depth+1);
dfs(root->right,depth+1);
return ;
}
int minDepth(TreeNode *root) {
if(!root) return 0;
dfs(root,0);
return res;
}
};