Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

965. Univalued Binary Tree (단일값 이진 트리) 본문

코딩 테스트/LeetCode

965. Univalued Binary Tree (단일값 이진 트리)

포카리tea 2024. 10. 31. 12:21

이진 트리는 트리의 모든 노드가 같은 값을 가질 때 단일값을 갖습니다.

이진 트리의 root가 주어지면 주어진 트리가 유니값인 경우 true로 반환하거나 그렇지 않은 경우 false로 반환합니다.

 

 

예시 1:

입력: root = [1,1,1,1,1,null,1]
출력: true

 

예시 2:

입력: root = [2,2,2,5,2]
출력: false

 

 

조건:

  • 트리의 노드 수는 [1, 100] 범위에 있습니다.
  • 0 <= Node.val < 100

 

정답:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
public class Solution {
    public bool IsUnivalTree(TreeNode root) {
        if (root == null)
        {
            return true;
        }

        return UnivaluedCheck(root, root.val);
    }

    public static bool UnivaluedCheck(TreeNode root, int val)
    {
        if (root == null)
        {
            return true;
        }
        if (root.val != val)
        {
            return false;
        }
        
        return UnivaluedCheck(root.left, val) && UnivaluedCheck(root.right, val);
    }
}

해설: root를 모두 탐색 때까지 체크를 하고 만약 모두 탐색했을 때 root.val이 동일하다면 false를 return합니다.

즉 root가 null이라면 탐색이 완료되었다는 뜻이므로 true를 return합니다.

해당 작업을 left와 right 모두 완료해야하므로 둘다 한번에 &&로 묶어 return합니다.