【发布时间】:2012-08-21 02:07:26
【问题描述】:
究竟如何序列化 BST?以最有效的方式做到这一点的正确方法是什么?现在,这太笼统了,所以让我解释一下我的意思。
这是一些伪伪代码:
public int[] serialize(root){
preorder traversal
convert node to binary representation
add the binary representation to an array
send array via stream
}
或者
public int serialize(root){
preorder traversal
convert node to binary representation
send the binary representation via stream
}
我的问题是——创建一个数组并发送它的所有位,这样有效吗?或者我应该跳过整个数组的想法,每次转换一个节点时,将其发送出去以反序列化它?也许这两种实现都是愚蠢的。任何帮助将不胜感激。
【问题讨论】:
-
“最佳”解决方案可能取决于树的表示方式,因此如果不了解这棵树的更多信息,很难说。但如果没有必要(听起来像是),我会跳过数组步骤,然后将这些位序列化。
-
你是什么意思树是如何表示的?这是一个 BST。左边小,右边大
-
我的意思是它是如何在内部表示的。您可以将 BST 表示为节点和引用(如链表)或数组,例如(参见 Wikipedia)。
-
哦,对不起。这更适用于链表版本
标签: java c++ serialization data-structures binary-search-tree