Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(965. Univalued Binary Tree)

silvergoni 2022. 2. 20. 10:31
반응형

https://leetcode.com/problems/univalued-binary-tree/

 

1. 2022.02.20 시도

소요시간: 4분

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        return traverse(root, root.val);
    }
    
    private boolean traverse(TreeNode root, int value) {
        boolean ret = root.val == value;
        if (root.left != null) {
            ret = ret && traverse(root.left, value);
        }
        if (root.right != null) {
            ret = ret && traverse(root.right, value);
        }
        
        return ret;
    }
}

풀이 접근 과정

메소드 하나 만들어서 루트와 비교하면서 순회하면 되겠다 싶었다.

 

느낀점

  • 나는 정말 루트값을 비교의 대상으로 삼았는데 여기서 아이디어는 구지 정말 루트값이 아니어도 된다는 것이다. 부모와 비교했을 때, 값이 다르면 그건 이미 univalued가 아니므로 루트의 값을 들고 다니지 않아도 된다. 더 간단히 하면 아래처럼 나타낼 수 있다.
class Solution {
    public boolean isUnivalTree(TreeNode root) {
        boolean left = (root.left == null)
            || (root.left.val == root.val)
            && isUnivalTree(root.left);
        boolean right = (root.right == null)
            || (root.right.val == root.val)
            && isUnivalTree(root.right);
        return left && right;
    }
}

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형