The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
Idea: Recursion. If the node is a leaf, return the result, otherwise return the accumulated depth from the children. I thought the code can be more clean if apply some math tricks, however, it will be much harder to be understood. So I just implement with the simplest logic. The time complexity is the same.
Time: O(n) Space: O(lgn)
Code:
public 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)
return minDepth(root.right)+1;
if(root.right==null)
return minDepth(root.left)+1;
return Math.min(minDepth(root.left),minDepth(root.right))+1;
}
}
No comments:
Post a Comment