- if it is a leaf node, then return 1.
- If left tree is null, then recur to right subtree and vise versa.
- if both left and right are not NULL, then return minimum of both heights + 1;
class Solution {
public:
int minDepth(TreeNode * root) {
return dfsHelper(root);
}
int dfsHelper(TreeNode* root) {
if (root == NULL) {
return 0;
}
int left = dfsHelper(root->left);
int right = dfsHelper(root->right);
if (left == 0 && right == 0) {
return 1;
} else if (left != 0 && right == 0) {
return left + 1;
} else if (left == 0 && right != 0) {
return right + 1;
} else {
return min(left, right) + 1;
}
}
};