
😎풀이
- 너비 우선 탐색
1-1. x
, y
값에 해당하는 노드 탐색
1-2. 깊이 및 부모 노드 정보 저장
x
, y
에 해당하는 노드가 탐색되지 않았다면 false
반환
- 부모가 같은 노드라면
false
반환
- 깊이가 서로 다르다면
false
반환
- 모든 조건을 충족하는 경우
true
반환
type InfoType = {
parent: TreeNode | null,
depth: number
}
function isCousins(root: TreeNode | null, x: number, y: number): boolean {
let xInfo: InfoType | null = null
let yInfo: InfoType | null = null
const queue = [{ node: root, depth: 0, parent: null }]
while(queue.length) {
const { node, depth, parent } = queue.shift()
if(node.val === x) xInfo = { parent, depth }
else if(node.val === y) yInfo = { parent, depth }
if(node.left) queue.push({ node: node.left, depth: depth + 1, parent: node })
if(node.right) queue.push({ node: node.right, depth: depth + 1, parent: node })
}
if(!xInfo || !yInfo) return false
if(xInfo.parent === yInfo.parent) return false
if(xInfo.depth !== yInfo.depth) return false
return true
};