Hard
Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.
Clarification: The input/output format is the same as how LeetCode serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.
Example 1:
Input: root = [1,2,3,null,null,4,5]
Output: [1,2,3,null,null,4,5]
Plain Text
복사
Example 2:
Input: root = []
Output: []
Plain Text
복사
Example 3:
Input: root = [1]
Output: [1]
Plain Text
복사
Example 4:
Input: root = [1,2]
Output: [1,2]
Plain Text
복사
Constraints:
•
The number of nodes in the tree is in the range [0, 104].
•
1000 <= Node.val <= 1000
My solution
직렬화는 데이터 구조나 객체를 일련의 비트로 변환하여 파일이나 메모리 버퍼에 저장하거나 네트워크 연결 링크를 통해 전송하여 나중에 같은 컴퓨터 환경에서 재구성하는 과정입니다.
이진 트리를 직렬화하고 직렬화하지 않는 알고리즘을 설계합니다. 직렬화/직렬화 해제 알고리즘의 작동 방식에는 제한이 없습니다. 이진 트리를 문자열에 직렬화하고 이 문자열을 원래 트리 구조로 역직렬화할 수 있는지 확인하기만 하면 됩니다.
•
*확인합니다.** 입력/출력 형식은 [리트코드가 이진 트리를 직렬화하는 방법](https://leetcode.com/faq/#binary-tree)과 동일합니다. 반드시 이 형식을 따를 필요는 없으니 창의적으로 접근하여 스스로 다른 방법을 생각해보세요.