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

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

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

Имеется XML файл
Листинг программы
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <tree>
  3. <node name="Зеленое?">
  4. <true>
  5. <node name="Крокодил">
  6. <true>
  7. null
  8. </true>
  9. <false>
  10. null
  11. </false>
  12. </node>
  13. </true>
  14. <false>
  15. <node name="Мычит?">
  16. <true>
  17. <node name="Корова">
  18. <true>
  19. null
  20. </true>
  21. <false>
  22. null
  23. </false>
  24. </node>
  25. </true>
  26. <false>
  27. <node name="Заяц">
  28. <true>
  29. null
  30. </true>
  31. <false>
  32. null
  33. </false>
  34. </node>
  35. </false>
  36. </node>
  37. </false>
  38. </node>
  39. </tree>
и пытаюсь вывести все дерево
Листинг программы
  1. using System;
  2. using System.Xml;
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. XmlDocument xDoc = new XmlDocument();
  8. xDoc.Load("tree.xml");
  9. XmlElement xRoot = xDoc.DocumentElement;
  10. Console.WriteLine(xRoot.Name);
  11. foreach (XmlNode xnode in xRoot)
  12. {
  13. XmlNode attr = xnode.Attributes.GetNamedItem("name");
  14. Console.WriteLine("\t" + attr.Value); //зеленое
  15.  
  16. }
  17. Console.Read();
  18. }
  19. }
Выводит главный элемент (tree) и следующий (зеленое). А дальше полный ступор, как выводить все оставшиеся элементы?
Нашел прекрасный XmlSerializer но и с ним ошибки Класс дерева
Листинг программы
  1. [Serializable]
  2. class MyTree<T>
  3. {
  4. [Serializable]
  5. public class Node
  6. {
  7. public T Value { get; set; }
  8. public Node True { get; set; }
  9. public Node False { get; set; }
  10. public Node(T _value)
  11. {
  12. Value = _value;
  13. True = null;
  14. False = null;
  15. }
  16. }
  17. public MyTree<T>.Node Root;
  18. public MyTree()
  19. { }
  20. public MyTree(T _value)
  21. {
  22. Root = new MyTree<T>.Node(_value);
  23. }
  24. public void Add(MyTree<T>.Node _currentNode, T _valueTrue, T _valueFalse)
  25. {
  26. _currentNode.True = new MyTree<T>.Node(_valueTrue);
  27. _currentNode.False = new MyTree<T>.Node(_valueFalse);
  28. }
  29. }
программа
Листинг программы
  1. MyTree<string> Tree = new MyTree<string>("Зеленое"); //корень
  2. MyTree<string>.Node curr = Tree.Root; //текущая вершина
  3. Tree.Add(curr, "Крокодил", "Корова");
  4. XmlSerializer formatter = new XmlSerializer(Tree.GetType());
  5. using (FileStream fs = new FileStream("people.xml", FileMode.OpenOrCreate))
  6. {
  7. formatter.Serialize(fs, Tree);
  8. }
Ошибка в 6-ой строке
1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] недоступен в силу его уровня защиты. Возможна обработка только общих типов.

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут