serialization - 面试题——序列化和反序列化n叉树

标签 serialization tree n-ary-tree

我最近在面试中遇到了这个问题,面试官让我创建两个函数。 Function1 应该采用 n-ary 树并转换为字节数组,而 function2 应该采用 byte[] 并构建 n-ary 树。如果它是一棵二叉树,我会用 null 的特殊字符进行预排序遍历并存储在一个数组中并转换为 byte[] 但这里是 n 叉树(有很多 child )。我不知道如何存储它并用数组重建 n 元树。将此 n 元树存储到数组中的任何想法或公式? 感谢您的帮助。

最佳答案

在我看来递归的一个很好的用途。编写一个方法(子例程、函数)来写出一个节点及其下面的所有树。它会写出节点,然后写出子节点的数量(叶节点为零),然后调用自身写入每个子节点(如果有的话)。现在在树的顶部节点上调用该方法,您已将其序列化。

要反序列化,请编写一个读取节点的方法。它会读入节点本身,读入子节点的数量,然后读入每个子节点(如果有的话)。在流上调用它一次,它会将顶部节点和所有后代节点都放在适当的位置——整棵树。

这个故事的寓意是递归(它实际上只是一种获取和使用堆栈的便捷方式)对于处理图形非常有用。还有比您想象的更多的东西是图表。

关于serialization - 面试题——序列化和反序列化n叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108347/

相关文章:

datetime - 为什么cxf jax-rs日期字段序列化有冒号?

PHP序列化字符串格式

Kotlin commonMain 与 java.io.Serializable

c++ - 将指向数组的指针元素推送到 C++ 中的 std::list

C - 删除n叉树节点

java - N叉树深度和度数算法

python - 没有客户端/服务器的 key : value store in Python for possibly 100 GB of data,

c++ - 从前序遍历迭代构建二叉搜索树(非递归)

java - 使用广度优先搜索从图中生成树?