🧑💻 언어 및 제출 결과
- 사용 언어:
TypeScript
- 통과 여부: ✅
🧠 풀이 설명
function isSymmetric(root: TreeNode | null, compareNode?: TreeNode | null): boolean {
if (compareNode === undefined) {
if (!root) return true;
return isSymmetric(root.left, root.right);
}
if (!root && !compareNode) return true; // 둘 다 null이면 대칭
if (!root || !compareNode) return false; // 하나만 null이면 비대칭
return (
root.val === compareNode.val &&
isSymmetric(root.left, compareNode.right) &&
isSymmetric(root.right, compareNode.left)
);
}
노드의 대칭이 맞는지 확인하는 문제입니다
compareNode는 비교할 노드고, 처음 호출할 때는 비교할 노드가 없기 때문에 undefined일 때 탐색 할 수 있게 짰습니다
이후 왼쪽 오른쪽이 null 이면 true를 반환하게 했습니다. 첫 번째 케이스 부터 깨지더군요
그리고 둘 중 하나는 null 이면 false를 반환하게 했습니다.
후에 return 값으로 AND 연산자로 root와 비교할 노드가 같은지 확인하고, 같으면 왼쪽 오른쪽 노드를 비교해서 대칭인지 재귀로 확인하게 했습니다.
📊 시간/공간 복잡도
✅ 어떠한 근거로 시간/공간 복잡도가 이렇게 나왔는지 설명해주세요.
⚡️ 풀이의 속도와 메모리 등을 캡쳐해서 올려주세요.
- 시간 복잡도:
O(n)
- 트리의 모든 노드를 한 번씩 방문해야 함 - 공간 복잡도:
O(h)
- 트리의 높이
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode] Convert Sorted Array to Binary Search Tree (1) | 2025.07.23 |
---|---|
[LeetCode] Binary Tree Level Order Traversal (0) | 2025.07.16 |
[LeetCode] Validate Binary Search Tree (1) | 2025.07.14 |
[LeetCode] Maximum Depth of Binary Tree (0) | 2025.07.11 |
[LeetCode] Linked List Cycle (1) | 2025.07.10 |