欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java樹(shù)序列化和反序列化

Java中的序列化和反序列化是將對(duì)象轉(zhuǎn)化為二進(jìn)制流并存儲(chǔ)或傳輸,以及從二進(jìn)制流中重新構(gòu)建對(duì)象的過(guò)程。在樹(shù)結(jié)構(gòu)中,我們可以將樹(shù)轉(zhuǎn)換為二進(jìn)制流進(jìn)行存儲(chǔ)或傳輸,并在需要時(shí)重新構(gòu)建相應(yīng)的樹(shù)結(jié)構(gòu)。

Java中提供的序列化API是Serializable接口和ObjectOutputStream/ObjectInputStream類(lèi)。我們可以通過(guò)實(shí)現(xiàn)Serializable接口,并利用ObjectOutputStream將樹(shù)結(jié)構(gòu)寫(xiě)入二進(jìn)制流中。反序列化則需要利用ObjectInputStream將二進(jìn)制流讀取出來(lái),然后進(jìn)行反序列化操作。以下是Java樹(shù)序列化和反序列化的示例代碼:

import java.io.*;
class TreeNode implements Serializable {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) { this.val = val; }
}
public class TreeSerialization {
public static byte[] serializeTree(TreeNode root) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(root);
return baos.toByteArray();
}
public static TreeNode deserializeTree(byte[] data) throws IOException, ClassNotFoundException {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ObjectInputStream ois = new ObjectInputStream(bais);
return (TreeNode) ois.readObject();
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.right.left = new TreeNode(5);
// 序列化樹(shù)
byte[] data = serializeTree(root);
// 反序列化樹(shù)
TreeNode newRoot = deserializeTree(data);
}
}

在上面的代碼中,我們定義了一個(gè)TreeNode類(lèi),實(shí)現(xiàn)了Serializable接口,該類(lèi)代表樹(shù)的節(jié)點(diǎn),包括節(jié)點(diǎn)的值、左子樹(shù)和右子樹(shù)。我們還編寫(xiě)了兩個(gè)方法,分別用于將樹(shù)序列化為二進(jìn)制流和反序列化二進(jìn)制流還原樹(shù)。在main方法中,我們創(chuàng)建了一棵樹(shù)并進(jìn)行序列化,然后對(duì)序列化后的二進(jìn)制流執(zhí)行反序列化操作,得到一棵新的樹(shù)。