본문 바로가기
HackerRank

isTreeSymmetric

by Doromi 2024. 4. 5.
728x90
반응형

주어진 이진 트리가 중심을 기준으로 대칭인지 여부를 판단하는 문제입니다. 이를 확인하기 위해서는 각 측면이 서로 거울처럼 반영되는지 확인해야 합니다.

트리가 비어 있으면 대칭이라고 판단합니다.
그렇지 않은 경우, 왼쪽 서브트리와 오른쪽 서브트리를 비교하여 값이 같은지 확인합니다.
서브트리들이 대칭적으로 구성되어 있는지 재귀적으로 확인합니다.

 

//
// Binary trees are already defined with this interface:
// class Tree<T> {
//   public T value { get; set; }
//   public Tree<T> left { get; set; }
//   public Tree<T> right { get; set; }
// }
bool solution(Tree<int> t) {
    if(t == null) return true;
    return isSymmetric(t.left,t.right);
}

bool isSymmetric(Tree<int> l,Tree<int> r){
    if(l == null && r == null){
        return true;
    }
     if(l == null || r == null || l.value != r.value){
         return false;
     }
     return isSymmetric(l.left,r.right) && isSymmetric(l.right,r.left);
}
 좌측과 우측 서브트리가 거울처럼 반영되는지 확인하며, 값이 같은지도 검사합니다. 
728x90
반응형

'HackerRank' 카테고리의 다른 글

findProfession  (0) 2024.04.08
hasPathWithGivenSum  (0) 2024.04.02
Top Competitors(SQL)  (0) 2023.10.20
The Report(SQL)  (0) 2023.10.19
Average Population of Each Continent(SQL)  (0) 2023.10.19