【问题标题】:Java tree with N leaves?有N个叶子的Java树?
【发布时间】:2015-08-15 19:22:37
【问题描述】:

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

这个问题基本上是一棵游戏树,它代表了计算赢得游戏所需的最小移动数的所有移动。这对 Dom4j 有用吗?谢谢。

【问题讨论】:

    标签: java dom dom4j


    【解决方案1】:

    我会尝试回答,但要考虑一些因素:

    首先直接回答你的问题,是否可以用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

    然而,上面提到的简单数据结构不会有相同的内存影响 - 在计算过程中操作数据结构也会更容易。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。但是使用 Dom 树我们可以执行广度优先搜索?
    • 我不太熟悉 DOM 树,但 BFS 是一种算法,而 DOM 树意味着枚举节点的直接子节点并处理它们
    猜你喜欢
    • 2016-12-24
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2017-02-24
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多