본문 바로가기
알고리즘 문제 풀이/BFS

965. Univalued Binary Tree

by 가나무마 2021. 9. 1.
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

문의는 댓글 바람.

팀 알고리즘 레포지토리 주소

문제 출처

[문제 설명]

값이 다른 노드가 하나라도 나오면 return false, 다 같으면 return true

 

[처음 생각한 접근 방법]

1.그냥 BFS로 순회해서 다른 수가 나오면 return false 해주기

2.그냥 DFS로 순회해서 다른 수가 나오면 return false 해주기

그냥 1번으로 풀었습니다.

 

[자바코드]

import javax.swing.tree.TreeNode;
import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public boolean isUnivalTree(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        int value = queue.peek().val;
        while(!queue.isEmpty()) {
            TreeNode node = queue.poll();
            if (node.val != value) return false;

            if (node.left != null) queue.offer(node.left);
            if (node.right != null) queue.offer(node.right);
        }

        return true;
    }
}

[코틀린코드]

import java.util.*

class Solution {
    fun isUnivalTree(root: TreeNode?): Boolean {
        val queue: Queue<TreeNode> = LinkedList<TreeNode>()
        queue.offer(root)
        val value = queue.peek().`val`

        while (!queue.isEmpty()) {
            val node = queue.poll()

            if (node.`val` != value) return false

            node.left?.let {
                queue.offer(node.left)
            }
            node.right?.let {
                queue.offer(node.right)
            }
        }
        return true
    }
}

 

코틀린은 확실히 null 처리가 편해서 좋습니다.

728x90
반응형

'알고리즘 문제 풀이 > BFS' 카테고리의 다른 글

404. Sum of Left Leaves  (0) 2021.09.09
463. Island Perimeter  (0) 2021.09.01
993. Cousins in Binary Tree  (0) 2021.08.27
1325. Delete Leaves With a Given Value  (0) 2021.07.31
프로그래머스 - 네트워크  (0) 2021.07.23