【发布时间】:2015-08-15 19:22:37
【问题描述】:
我正在解决一个 Java 问题,它需要一个带有 N 个叶子的树的 Java 实现。为此,我决定使用 XML Dom 树来表示问题。 这可能与 Dom4j 吗?
这个问题基本上是一棵游戏树,它代表了计算赢得游戏所需的最小移动数的所有移动。这对 Dom4j 有用吗?谢谢。
【问题讨论】:
我正在解决一个 Java 问题,它需要一个带有 N 个叶子的树的 Java 实现。为此,我决定使用 XML Dom 树来表示问题。 这可能与 Dom4j 吗?
这个问题基本上是一棵游戏树,它代表了计算赢得游戏所需的最小移动数的所有移动。这对 Dom4j 有用吗?谢谢。
【问题讨论】:
我会尝试回答,但要考虑一些因素:
首先直接回答你的问题,是否可以用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。
然而,上面提到的简单数据结构不会有相同的内存影响 - 在计算过程中操作数据结构也会更容易。
希望这会有所帮助。
【讨论】: