找到节点与树根之间的距离

时间:2016-01-23 01:19:19

标签: java tree

我正在创建一种方法来查找特定节点与其所在树的根之间的距离,我想验证这是否是最简单的方法。我有点担心持有者会成为原始节点,因此当我向上移动树时,我正在向我拉动节点。

    public int distanceToRoot(Node node)
{
    Node holder= node;
    int distance=0;
    if (node.getParent()==null)
    {
        distance=0;
    }
    else
    {
        while (holder.getParent() !=null)
            {
            holder=holder.getParent();
            distance++;
            }
    }
    return distance;
}

2 个答案:

答案 0 :(得分:0)

这是一种方法:

public int distanceToRoot(Node node)
{
    if (node == null) 
        /* what do you want to do in this case */;
    int d = 0;
    for(Node p=node.getParent(); p!=null; p=p.getParent()) d++;
    return d;
}

答案 1 :(得分:0)

可以通过递归来完成。从任何子节点开始,向上遍历到父节点。找到后,返回距离。

public int distanceToRoot(Node node, int distance){
    // If no parent it must be the root, return whatever value distance currently is
    if (node.getParent()==null) return distance;

    // Otherwise, recurse passing in this node's parent and current distance plus 1
    return distanceToRoot(node.getParent(), distance + 1 );
}

应该以初始距离为零来调用

int dist = distanceToRoot(aNode, 0);