Какой лучший способ представить дерево с помощью XML? - PullRequest
1 голос
/ 14 декабря 2010

Я реализую некоторые классы для обработки общих структур данных (Tree, BinaryTree, Search Binary Tree, BTree, AVL и т. Д.). Мне нужен способ хранить информацию о дереве в источнике данных и анализировать ее для одного из этих классов. Самый простой способ - использовать XML (переносимость очень важна). Дело в том, что XML-документы, которые я делаю, нелегко читать. Они не достаточно «интуитивно понятны». Например, я делал что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
    <root>100</root>
    <node>
        <tree>
            <root>50</root>     
        </tree>
    </node>
    <node>
        <tree>
            <root>200</root>        
        </tree>
    </node>
</tree>

Там дерево будет примерно таким:

                    100
              50                200

Что ты скажешь? Есть ли у вас какие-либо другие рекомендации?

Ответы [ 4 ]

5 голосов
/ 14 декабря 2010

Я не вижу в вашем описании какого-либо важного структурного различия между корнем, листьями дерева и другими узлами. Таким образом, все они могут иметь одну и ту же модель содержимого, как в этом примере:

<tree>
    <value>100</value>
    <tree>
        <value>50</value>
    </tree>
    <tree>
        <value>200</value>
    </tree>
</tree>

Эта структура немного менее многословна, и дерево документов XML соответствует дереву, которое вы пытаетесь представить. Если ваши значения могут быть выражены в виде строк, вы можете даже написать это так:

<tree>
    100
    <tree>50</tree>
    <tree>200</tree>
</tree>
2 голосов
/ 14 декабря 2010

Нет лучшего способа представить дерево в XML.Все зависит от того, для чего вы хотите оптимизировать хранилище - хотите ли вы быстро отследить определенный узел?Тогда плоское (эр) представление может быть лучше.Если вы хотите сохранить описание не многословным, то описанный вами метод будет довольно хорошим (хотя я бы, вероятно, превратил «корневого» потомка в атрибут (root / value), так что каждый узел в xml на самом делеузел дерева).

1 голос
/ 24 декабря 2010
<node value="100">
    <node value="50" />
    <node value="200" />
</node>

Элементы в дереве - это узлы, а не деревья.Вся сборка узла составляет дерево.

Кроме того, XML сам по себе является деревом, поэтому вам не нужно явно его моделировать.

0 голосов
/ 24 декабря 2010

По моему мнению, структуры данных должны быть простыми на компьютере, а не на человеке.Если вам нужна удобочитаемая версия данных, просто создайте красивую печать посетитель .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...