N树叶的Java树?

时间:2015-08-15 19:22:38

标签: java dom dom4j

我正在解决一个Java问题,它需要一个带有N个叶子的树的java实现。为此,我决定使用XML Dom树来表示问题。 这可能与Dom4j?

问题基本上是一个游戏树,它代表了计算赢得比赛所需的最小移动次数的所有动作。这是Dom4j的任何有用样本吗?感谢。

1 个答案:

答案 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

上面提到的简单数据结构不会产生相同的内存含义 - 在计算过程中操作数据结构也会更容易。

希望这有帮助。