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 |