Вывод и запись бинарного дерева в XML файл - C#

Узнай цену своей работы

Формулировка задачи:

Имеется XML файл
<?xml version="1.0" encoding="utf-8" ?>
<tree>
  <node name="Зеленое?">
    <true>
        <node name="Крокодил">
            <true>
                null
            </true>
            <false>
                null
            </false>
        </node>
    </true>
    <false>
        <node name="Мычит?">
            <true>
                <node name="Корова">
                    <true>
                        null
                    </true>
                    <false>
                        null
                    </false>
                </node>
            </true>
            <false>
                <node name="Заяц">
                    <true>
                        null
                    </true>
                    <false>
                        null
                    </false>
                </node>
            </false>
        </node>
    </false>
  </node>
</tree>
и пытаюсь вывести все дерево
using System;
using System.Xml;
 
class Program
{
    static void Main(string[] args)
    {
        XmlDocument xDoc = new XmlDocument();
        xDoc.Load("tree.xml");
        XmlElement xRoot = xDoc.DocumentElement;
        Console.WriteLine(xRoot.Name);
        foreach (XmlNode xnode in xRoot)
        {
            XmlNode attr = xnode.Attributes.GetNamedItem("name");
            Console.WriteLine("\t" + attr.Value); //зеленое

        }
        Console.Read();
    }
}
Выводит главный элемент (tree) и следующий (зеленое). А дальше полный ступор, как выводить все оставшиеся элементы?
Нашел прекрасный XmlSerializer но и с ним ошибки Класс дерева
    [Serializable]
    class MyTree<T>
    {
        [Serializable]
        public class Node
        {
            public T Value { get; set; }
            public Node True { get; set; }
            public Node False { get; set; }
 
            public Node(T _value)
            {
                Value = _value;
                True = null;
                False = null;
            }
        }
 
        public MyTree<T>.Node Root;
 
        public MyTree()
        { }
 
        public MyTree(T _value)
        {
            Root = new MyTree<T>.Node(_value);
        }
        
        public void Add(MyTree<T>.Node _currentNode, T _valueTrue, T _valueFalse)
        {
            _currentNode.True = new MyTree<T>.Node(_valueTrue);
            _currentNode.False = new MyTree<T>.Node(_valueFalse);
        }
    }
программа
            MyTree<string> Tree = new MyTree<string>("Зеленое"); //корень
 
            MyTree<string>.Node curr = Tree.Root; //текущая вершина
            Tree.Add(curr, "Крокодил", "Корова");
 
            XmlSerializer formatter = new XmlSerializer(Tree.GetType());
 
            using (FileStream fs = new FileStream("people.xml", FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, Tree);
            }
Ошибка в 6-ой строке
1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] недоступен в силу его уровня защиты. Возможна обработка только общих типов.

Решение задачи: «Вывод и запись бинарного дерева в XML файл»

textual
Листинг программы
public Node True { get; set; }
public Node False { get; set; }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5