[leetcode] Minimum Depth of Binary Tree

jun·2021년 4월 6일
0
post-thumbnail

유의할점

루트가 리프인경우

풀이

코드

Java : 내가 짠 코드


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root==null)
            return 0;
        int leftDepth = minDepth(root.left);
        int rightDepth = minDepth(root.right);
        if(leftDepth==0)
            return 1 + rightDepth;
        if(rightDepth==0)
            return 1 + leftDepth;
        return 1 + Math.min(leftDepth,rightDepth);
        //조심.
    }
}

Java : 다음과 같이 줄일수있다.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int minDepth(TreeNode root) {
        if(root==null)
            return 0;
        int leftDepth = minDepth(root.left);
        int rightDepth = minDepth(root.right);
        if(leftDepth==0)
            return 1 + rightDepth;
        if(rightDepth==0)
            return 1 + leftDepth;
        return (leftDepth==0||rightDepth==0) ? 
            1 + leftDepth + rightDepth : 1 + Math.min(leftDepth,rightDepth);
    }
}
profile
Computer Science / Algorithm / Project / TIL

0개의 댓글