我需要编写一个方法来计算二叉树中的边总数。我正在尝试递归,因为它可以根据节点的数量来计算 - 1,但不确定如何在递归结束时减去一个。因此,我正在尝试更新变量" count"然后在最后减去一个。我想知道这是最好的方法,还是我应该尝试另一种方式。
public int numOfEdges(Node v){
int count;
if(isLeaf(v){
count = 0;
}
else{
count = 1 + numOfEdges(left(v)) + numOfEdges(right(v));
}
return count - 1;
}
答案 0 :(得分:1)
我认为这可能是最容易实现的,只需编写两种不同的方法,这是使用递归时的常用技术:
private int numNodesIn(Node v) {
if (v == null) return 0;
return 1 + numNodesIn(v.left) + numNodesIn(v.right);
}
public int numEdgesIn(Node v) {
return v == null? 0 : numNodesIn(v) - 1;
}