Google 真题面经:Serialize and Deserialize Binary Tree – 一亩三分地 – VO 辅助 – 面试辅助 – 代面试

这道题在 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代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *