计算树中从根到最远节点的边的方法

时间:2015-03-26 13:00:22

标签: java recursion tree edges

我正在尝试编写一个方法来计算从根到最远节点所需的最大边数。

public static int depth(Tree t) {
    if(t == null) return 0;
    else return 1 + Math.max(depth(t.left), depth(t.right));
}

Tree

该方法应该为此树显示3的答案,但是它当前给出4的结果,因为它计算节点而不是边缘,因此计算初始根。我如何改变它以得到正确的结果?

1 个答案:

答案 0 :(得分:1)

将递归方法包装在外部方法中,该方法测试null树并从结果中减去一个:

public static int depth(Tree t) {
  return (t == null) ? 0 : calculateDepth(t) - 1;
}

private static int calculateDepth(Tree t) {
  if (t == null)
    return 0;
  else
    return 1 + Math.max(calculateDepth(t.left), calculateDepth(t.right));
}