[LeetCode] 449. Serialize and Deserialize BST

Chobby·2026년 2월 26일

LeetCode

목록 보기
1009/1023

😎풀이

  • 직렬화: BFS 형식으로 요소를 저장하며, 요소가 없는 경우에도 트리 형식을 유지한 채로 null 전달
  • 역직렬화: BFS 형식으로 재구축하며, 요소의 값이 유효한 경우 TreeNode로 재구성
function serialize(root: TreeNode | null): string {
    if(!root) return '[]'
    const result = []
    const queue = [root]
    while(queue.length) {
        const node = queue.shift()
        const val = node?.val ?? null
        result.push(val)
        if(val === null) continue
        queue.push(node.left)
        queue.push(node.right)
    }
    return JSON.stringify(result)
};

function deserialize(data: string): TreeNode | null {
    const parsed = JSON.parse(data)
    if(!Array.isArray(parsed) || parsed.length === 0) return null
    const root = new TreeNode(parsed[0])
    const queue = [root]
    let i = 1
    while(queue.length && i < parsed.length) {
        const node = queue.shift()
        if(i < parsed.length && parsed[i] !== null) {
            node.left = new TreeNode(parsed[i])
            queue.push(node.left)
        }
        i++
        if(i < parsed.length && parsed[i] !== null) {
            node.right = new TreeNode(parsed[i])
            queue.push(node.right)
        }
        i++
    }
    return root
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글