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