java - 在树中找到节点的路径?

标签 java tree

我有一个看起来像这样的树类:

Class Tree {
   Node root;
   Node curNode;
   public List<String> find(String value) {
      if (curNode == null) curNode = root;
        for (Node child : curNode.children) {
            if (found == false) {
                if (child.data.equals(value)) {
                    // if it finds it return the path to this node.
                }
                curNode = child;
                findDFS(value);
            }
        }
   }


class Node {
   List<Node> children;
   String data;
}

树根包含指向子节点的指针,子节点指向其他子节点等等。我遇到的问题是一旦它找到节点,我需要返回到该节点的路径。

最佳答案

传递一个跟踪路径的列表,一旦找到节点,退出递归并逐一填充路径。

    Boolean Search(Node node, String value, List<Node> track)
    {
        if (node == null) return false;

        if (node.data.equals(value))
        {
            track.add(node);
            return true;
        }

        for(Node child : node.children)
        {
            if (Search(child, value, track)
            {
                track.add(0, node);
                return true;
            }
        }

        return false;
    }

关于java - 在树中找到节点的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20232858/

相关文章:

c - 将新分支添加到树中,然后以有效的方式将新叶子添加到链表中的正确位置

r - R树状图中的叶子之间的字体和间距更大

java - 删除字符串开头的空格

java - 自动创建按时间顺序排列的变量名称

java - 用于可选字段的 Avro maven 插件

java - Zk:如何创建具有数据绑定(bind)交互的 "load on demand"树?

java - 如何将 Spring bean 注入(inject)到 Seam 上下文中?

java - 使用信号量在java中实现循环屏障

c++ - 在树中删除但只有一些节点

java - Wicket 6 DefaultNestedTree 未在文件夹单击时展开