😎풀이

  1. isSubtree: 서브 트리가 같은지 검사
    1-1. 현재 요소(root)가 null이라면, 탐색 범위 내에서 subRoot를 찾을 수 없었다는 의미 이므로 false 반환
    1-2. 현재 요소(root)와 비교 요소(subRoot)를 비교하여 구조가 같다면 true 반환
    1-3. 재귀적으로 subRoot에 해당하는 값을 rootleftright에서 탐색
  2. isSameTree: ab의 구조가 같은지 검증
function isSubtree(root: TreeNode | null, subRoot: TreeNode | null): boolean {
    if(!root) return false
    if(isSameTree(root, subRoot)) return true
    return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot)
};

function isSameTree(a: TreeNode | null, b: TreeNode | null): boolean {
    if(!a && !b) return true
    if(!a || !b) return false
    if(a.val !== b.val) return false
    return isSameTree(a.left, b.left) && isSameTree(a.right, b.right)
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글