Java 如何在单个数据结构中序列化整数和分隔符位?

Java 如何在单个数据结构中序列化整数和分隔符位?,java,serialization,Java,Serialization,我想序列化一个二叉树,但不是空的,我想保存一个位。 例如,考虑一个简单的二叉树,节点值为1,剩下的2个值为2,右边值为3。我想把它序列化成12。3. 我想把所有整数都转换成位,对于点,我只想存储一个位。 我可以使用java中的哪种数据结构将和int转换为位,并将它们与设置位隔开 我怀疑您是否希望对方反序列化字节以外的任何内容(任何小于字节的内容)。我将null序列化为整数-1,并使用正整数为节点编号。这样,您的序列化方法将是清晰、统一和明确的。我同意@peter.petrov,最好的方法是对节点

我想序列化一个二叉树,但不是空的,我想保存一个位。 例如,考虑一个简单的二叉树,节点值为1,剩下的2个值为2,右边值为3。我想把它序列化成12。3. 我想把所有整数都转换成位,对于点,我只想存储一个位。
我可以使用java中的哪种数据结构将和int转换为位,并将它们与设置位隔开

我怀疑您是否希望对方反序列化字节以外的任何内容(任何小于字节的内容)。我将null序列化为整数-1,并使用正整数为节点编号。这样,您的序列化方法将是清晰、统一和明确的。

我同意@peter.petrov,最好的方法是对节点使用整数,对空值使用-1

我认为不可能仅使用1位来表示空值,因为当您反序列化时,您将无法区分节点和空值(请记住,这是一个流)

但是,如果出于任何原因,您“需要”处理位,那么我能想到的唯一方法就是使用一个空位序列作为分隔符(示例中为0000)。此分隔符必须具有已知大小

如果二叉树有15个节点,则需要4位来表示它(2^4=16,15个二进制值表示节点,一个二进制值表示null)。如果你不知道你的树有多少个节点,或者它是否可以生长,那么要小心


然而,我认为这比简单地对节点使用整数和对空值使用-1要困难和复杂得多。

反序列化算法如何区分用于点的位和作为整数一部分的位?可以使用类似于哈夫曼编码的方法。