我最近在面试中遇到了这个问题,面试官让我创建两个函数。 Function1 应该采用 n-ary 树并转换为字节数组,而 function2 应该采用 byte[] 并构建 n-ary 树。如果它是一棵二叉树,我会用 null 的特殊字符进行预排序遍历并存储在一个数组中并转换为 byte[] 但这里是 n 叉树(有很多 child )。我不知道如何存储它并用数组重建 n 元树。将此 n 元树存储到数组中的任何想法或公式? 感谢您的帮助。
请您参考如下方法:
在我看来递归的一个很好的用途。编写一个方法(子例程、函数)来写出一个节点及其下面的所有树。它会写出节点,然后写出子节点的数量(叶节点为零),然后调用自身写入每个子节点(如果有的话)。现在在树的顶部节点上调用该方法,您已将其序列化。
要反序列化,请编写一个读取节点的方法。它会读入节点本身,读入子节点的数量,然后读入每个子节点(如果有的话)。在流上调用它一次,它会将顶部节点和所有后代节点都放在适当的位置——整棵树。
这个故事的寓意是递归(它实际上只是一种获取和使用堆栈的便捷方式)对于处理图形非常有用。还有比您想象的更多的东西是图表。