본문 바로가기
Algorithm

965 : Univalued Binary Tree ( leetcode / java )

코동이 2020. 10. 28.

 

*해결 과정

  단일 tree를 찾는 것이 핵심이다. 마찬가지로 void DFS()함수로 매 순간 비교하면서 값이 달라지면 boolean값을 업데이트하는 방법과 계속 초기 함수에서 재귀를 돌면서 정답을 찾는 방식이 있다.

 

*1번

class Solution {
    
    boolean isSame=true;
    
    public boolean isUnivalTree(TreeNode root) {
        if(root==null) return false;
        int val = root.val;
        DFS(root, val);
        return isSame;
    }
    
    public void DFS(TreeNode root, int val){
        if(root.val != val) {
            isSame=false;
            return;
        }
        
        if(root.left!=null) DFS(root.left,val);
        if(root.right!=null) DFS(root.right,val);
    }
}

 

*2번

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        if(root==null) return true;
        if(root.left!=null && root.left.val!=root.val) return false;
        if(root.right!=null && root.right.val!=root.val) return false;
        return isUnivalTree(root.left) && isUnivalTree(root.right);
    }
}

  root가 null일 때, 왼쪽과 오른쪽 서브트리에 대한 비교 후 다시 서브트리로 내려가서 재귀를 반복한다.

if(root==null) 경우 true라는 것이 중요한 점!!

반응형