【问题标题】:How to find a node in a tree given a path如何在给定路径的树中找到节点
【发布时间】:2015-10-31 05:59:22
【问题描述】:

我在 java 中有一个 TreeModel,我得到了一个查找路径以检查该路径是否存在。例如 /dir1/dir2/dir3/ 是我树中的现有路径。我的树是非二元的。我将如何处理这个?我的想法是让功能采取 DefaultMutableTreeNode 然后检查节点是否与我路径中的第一个目录具有相同的名称,其余目录依此类推。我的问题是如何递归地更改为下一个字符串和下一个节点。如果我的函数是递归的、迭代的等。任何帮助都会很棒!提前致谢。

【问题讨论】:

    标签: java recursion tree defaultmutabletreenode


    【解决方案1】:

    假设您有一棵典型的树,其中路径的每个元素都是下一个节点的键,当在根节点上调用时,这样的事情应该可以工作:

    public boolean hasPath(String path) {
        Node node = this;
        for (String key : path.split("/")) {
            node = node.get(key);
            if (node == null)
                return false;
        }
        return true;
    }
    

    它是迭代的,因此比递归的兔子洞更容易理解。它也更有效。

    【讨论】:

    • 如果我使用的是 DefaultMutableTreeNode 会起作用吗?
    • @user1995933 我没用过DefaultMutableTreeNode,但如果你使用getChildAt(),我编码get(),它看起来会起作用
    【解决方案2】:

    你可以这样做 将所有子节点从根目录保存并处理到堆栈中 然后开始弹出每个子节点并递归处理它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      相关资源
      最近更新 更多