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