C++ dfs
class Solution {
public:
int minDepth(TreeNode* root) {
if(root == nullptr) return 0;
if(root->left == nullptr && root->right == nullptr) return 1;
if(root->left == nullptr && root->right != nullptr) return 1 + minDepth(root->right);
if(root->left != nullptr && root->right == nullptr) return 1 + minDepth(root->left);
return min(minDepth(root->left),minDepth(root->right)) + 1;
}
};
java dfs
class Solution {
public int minDepth(TreeNode root) {
if(root == null) return 0;
if(root.left == null && root.right == null) return 1;
if(root.left != null && root.right == null) return minDepth(root.left) + 1;
if(root.left == null && root.right != null) return minDepth(root.right) + 1;
return Math.min(minDepth(root.left),minDepth(root.right)) + 1;
}
}
C++ bfs
class Solution {
public:
int minDepth(TreeNode* root) {
queue<TreeNode*> q;
if(root != nullptr) q.push(root);
else return 0;
int depth = 0;
while(!q.empty()){
int size = q.size();
if(size > 0) depth++;
while(size > 0){
size--;
TreeNode* t = q.front();
q.pop();
if(t->left == nullptr && t->right == nullptr) return depth;
if(t->left != nullptr) q.push(t->left);
if(t->right != nullptr) q.push(t->right);
}
}
return depth;
}
};
java bfs
class Solution {
public int minDepth(TreeNode root) {
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
if(root != null){
list.offerLast(root);
}else return 0;
int depth = 0;
while(!list.isEmpty()){
int size = list.size();
if(size > 0) depth++;
while(size > 0){
size--;
TreeNode t = list.pollFirst();
if(t.left == null && t.right == null) return depth;
if(t.left != null) list.offerLast(t.left);
if(t.right != null) list.offerLast(t.right);
}
}
return depth;
}
}