色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

Java樹序列化和反序列化

吉茹定1年前7瀏覽0評論

Java中的序列化和反序列化是將對象轉化為二進制流并存儲或傳輸,以及從二進制流中重新構建對象的過程。在樹結構中,我們可以將樹轉換為二進制流進行存儲或傳輸,并在需要時重新構建相應的樹結構。

Java中提供的序列化API是Serializable接口和ObjectOutputStream/ObjectInputStream類。我們可以通過實現Serializable接口,并利用ObjectOutputStream將樹結構寫入二進制流中。反序列化則需要利用ObjectInputStream將二進制流讀取出來,然后進行反序列化操作。以下是Java樹序列化和反序列化的示例代碼:

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);
// 序列化樹
byte[] data = serializeTree(root);
// 反序列化樹
TreeNode newRoot = deserializeTree(data);
}
}

在上面的代碼中,我們定義了一個TreeNode類,實現了Serializable接口,該類代表樹的節點,包括節點的值、左子樹和右子樹。我們還編寫了兩個方法,分別用于將樹序列化為二進制流和反序列化二進制流還原樹。在main方法中,我們創建了一棵樹并進行序列化,然后對序列化后的二進制流執行反序列化操作,得到一棵新的樹。