//方法-:
class Solution {
public:
int run(TreeNode *root) {
if(!root) return 0;
queue<pair<TreeNode*,int>> que;
que.push(make_pair(root,1));
pair<TreeNode*,int> p;
int ans=0;
while(!que.empty()){
p=que.front();
if(!(p.first->left)&&!(p.first->right)){
return p.second;
}
que.pop();
if(p.first->left) {que.push(make_pair(p.first->left,p.second+1));}
if(p.first->right){que.push(make_pair(p.first->right,p.second+1));}
}
}
};
//方法二:
class Solution {
public:
int run(TreeNode *root) {
if(!root) return 0;
queue<TreeNode*> que;
que.push(root);
TreeNode* p;
int level=0;
while(!que.empty()){
level++;
int size=que.size();
while(size--){
p=que.front();
que.pop();
if(!p->left&&!p->right) return level;
if(p->left) que.push(p->left);
if(p->right) que.push(p->right);
}
}
}
};
//方法三:
class Solution {
public:
int ans=0x3fffffff,n=0;
void order(TreeNode *root){
if(!root) return;
++n;
if(!root->left&&!root->right){
ans=min(ans,n);
}
order(root->left);
order(root->right);
--n;
}
int minDepth(TreeNode* root) {
if(!root) return 0;
order(root);
return ans;
}
};