2015-08-15 7 views
0

Я решаю проблему Java, которая нуждается в реализации Java дерева с N листьями. Для этого я решил использовать XML-дерево для представления проблемы. Возможно ли это с помощью Dom4j?Java дерево с N листьями?

Проблема в основном - это дерево игры, которое представляет все ходы для вычисления минимального количества ходов, необходимых для победы в игре. Это какой-нибудь полезный образец для Dom4j? Благодарю.

ответ

2

я попытаюсь ответить, но с некоторыми соображениями в виду:

Прежде всего непосредственно ответить на ваш вопрос о том, можно ли использовать XML DOM дерево, чтобы представить эту проблему? - Да, было бы возможно, но, на мой взгляд, использование дерева XML DOM для представления структуры данных не так естественно (на самом деле я мог бы также назвать это излишним), если вы не хотите сериализовать эту структуру данных на диск или через сети в результате вызова API.

Примеры присутствуют здесь: http://dom4j.sourceforge.net/dom4j-1.6.1/guide.html

Очиститель и более простой альтернативой было бы определить Node класс, как показано ниже:

class Node 
{ 
    int value; //assuming the node holds an integer value 
    List<Node> childNodes; // these are the N child nodes. 
} 

Ваш алгоритм игры может затем перебирать список дочерних узлов в выполнить его вычислительную логику.

Одним из ограничений, которые могут возникнуть в соответствии с вышеприведенным определением, является то, что в случае, если вы хотите найти определенный дочерний узел, вам необходимо выполнить итерацию по списку - в то время как если вы используете DOM4j, вы можете использовать XPath. Но использование DOM и XPath имеет свои ограничения в отношении потребления памяти - подробности см. В this.

Упрощенная структура данных, упомянутая выше, не будет иметь одинаковых последствий для памяти - также было бы легче манипулировать структурой данных во время процесса вычисления.

Надеюсь, это поможет.

+0

Спасибо за ваш ответ. Но с Dom Tree мы можем выполнить Первый поиск по ширине? – CrackerGen

+0

Я не так хорошо разбираюсь в дереве DOM, но тогда BFS - это алгоритм, и с деревом DOM это означало бы enuerating непосредственных дочерних узлов узла и их обработку –

Смежные вопросы