使用一堆子对象序列化通用二叉搜索树,包括二叉树

Serializing a generic binary search tree with a bunch of child objects, including a binary tree

我有一个非常复杂的二叉搜索树。它的节点数据应该保留一个自定义KeyValue class 的对象。作为键应该是一个字符串,值是另一棵树,其中数据字段包含自定义KeyValue class的对象,其中键是字符串,值是string[].

我需要使用 XML 序列化程序对其进行序列化和反序列化。

问题是序列化没有正确完成。 XML 文件不包含节点作为元素,只有它们的数据。

因此,无法反序列化,新树的根为空。 这是我执行序列化的方式。

            XmlSerializer XMLserializer = new XmlSerializer(typeof(RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>), extraTypes);
        XmlSerializerNamespaces myNamespace = new XmlSerializerNamespaces();
        myNamespace.Add("", "");

        using (FileStream serializationStream = File.Create("dictionaryTreeExample.xml"))
            XMLserializer.Serialize(serializationStream, dictionaryTree, myNamespace);

        RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>> dictionaryTreeDeserialized;

        using (FileStream deserializationStream = File.OpenRead("dictionaryTreeExample.xml"))
        {

            dictionaryTreeDeserialized = (RecursiveKeyValueTree<string, RecursiveKeyValueTree<string, string[]>>)XMLserializer.Deserialize(deserializationStream);
        }

XML 文件:

我在二叉树中的 Add() 方法在插入元素之前进行了不必要的检查,因此它阻止了外层树的元素被插入。