递归法:
class Solution {
public:
int depth(TreeNode* node){
if(node==nullptr) return 0;
int leftdepth=depth(node->left);
int rightdepth=depth(node->right);
if(node->left==nullptr&&node->right!=nullptr) return rightdepth+1;
if(node->left!=nullptr&&node->right==nullptr) return leftdepth+1;
int result=1+min(rightdepth,leftdepth);
return result;
}
int minDepth(TreeNode* root) {
if(root==nullptr) return 0;
else return depth(root);
}
};
迭代法:
class Solution {
public:
int minDepth(TreeNode* root) {
if(root==nullptr) return 0;
int depth=0;
queue<TreeNode*> que;
que.push(root);
while(!que.empty()){
int size=que.size();
depth++;
for(int i=0;i<size;i++){
TreeNode* node=que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
if(!node->left&&!node->right){
return depth;
}
}
}
return depth;
}
};