
😎풀이
- 직렬화: 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
};