这道题在 Google 出现频率很高,很多同学刷过类似题,现场很容易写乱。
面试官关注点很集中:
你如何设计序列化格式
serialize 和 deserialize 是否完全对应
Given a binary tree, create two functions: one that serializes the binary tree into a string and one that deserializes a serialized string back into a binary tree.
示意:
1
/ \
2 3
/ \
4 5
一种序列化结果:
1,2,3,null,null,4,5,null,null,null,null
给一棵二叉树,实现两个函数:
- serialize:把树转成字符串
- deserialize:把字符串还原成树
要求:还原结果和原树一致。
面试官:你打算用什么方式表示这棵树?
候选人:我用 level-order(BFS)做序列化,同时记录 null。
面试官:为什么要记录 null?
候选人:需要保留结构信息,否则无法唯一还原。
面试官:字符串格式怎么设计?
候选人:用逗号分隔,例如 1,2,3,null,...
序列化(serialize)
从 root 开始做 BFS。
每次从队列取节点:
- 有值 → 加入结果,同时把左右孩子入队
- 空节点 → 加入
"null"
最后用逗号拼接字符串。
反序列化(deserialize)
先把字符串 split 成数组。
第一个元素作为 root。
用队列维护当前父节点。
每次取一个父节点,对应处理两个位置:
- 一个给左孩子
- 一个给右孩子
遇到 "null" 就跳过。
为什么必须保留 null
看两个例子:
1 1
/ \
2 2
如果不记录 null,两棵树都会变成:
1,2
结构信息丢失,无法还原。
如果你近期准备 TikTok / Meta / Google / Stripe 等公司面试,可以提前准备这些高频题目。
我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

