如何获取从根到任意树上给定节点的路径?

时间:2016-10-21 20:14:03

标签: java tree depth-first-search

我有这棵树:

Harry(root)
Jane
    Joe
    Diane
        George
            Jill
                Carol
        Mary
    Mark
Bill
    Grace

我在this page

中扩展了代码

使用此功能,使用深度优先搜索

public static int path(Tree t, String root, String n)
{
    // Default traversal strategy is 'depth-first'
    int counter = 0;
    Iterator<Node> depthIterator = t.iterator(root);
    while (depthIterator.hasNext()) {
        Node node = depthIterator.next();
        if(node.getIdentifier().compareTo(n)==0)
        {
            System.out.println("Distance from " + root +" to " + n + " " + counter);
            return counter;
        }
        counter++;
        System.out.println(node.getIdentifier());
    }
    return 0;
}

我的最终目标是找到根与给定节点之间路径的长度。当我运行这个函数时,与root和Joe的距离,以及与root和Diane(兄弟姐妹)的距离是不同的,因为它计算深度优先搜索的步数。 这种方法是错误的还是一种解决方法?

1 个答案:

答案 0 :(得分:0)

您使用计数器查找深度不正确。在您显示的代码中,您只计算迭代器中的项目。

您需要以递归方式调用path()方法,并将深度值作为方法的参数传递。并递增每个递归调用的深度值。