我正在解决一个Java问题,它需要一个带有N个叶子的树的java实现。为此,我决定使用XML Dom树来表示问题。 这可能与Dom4j?
问题基本上是一个游戏树,它代表了计算赢得比赛所需的最小移动次数的所有动作。这是Dom4j的任何有用样本吗?感谢。
答案 0 :(得分: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。
上面提到的简单数据结构不会产生相同的内存含义 - 在计算过程中操作数据结构也会更容易。
希望这有帮助。