我正在尝试编写一个方法来计算从根到最远节点所需的最大边数。
public static int depth(Tree t) {
if(t == null) return 0;
else return 1 + Math.max(depth(t.left), depth(t.right));
}
该方法应该为此树显示3的答案,但是它当前给出4的结果,因为它计算节点而不是边缘,因此计算初始根。我如何改变它以得到正确的结果?
答案 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));
}