【发布时间】:2016-06-07 00:35:10
【问题描述】:
我需要编写一种方法来计算二叉树中边的总数。我正在尝试递归,因为它可以根据节点数计算 - 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;
}
【问题讨论】:
-
您是否要求它在一个方法中,或者您是否可以创建另一个名为
numOfNodes的方法并减去一个? -
“边缘”是指路径还是树叶?
-
递归没问题。使用 numOfNodes - 1 也可以。但是如果你使用直接递归,你应该测试 left
++1?和 right++1?。因为那是边缘。 -
“边缘”是指路径,而不是叶子
-
为什么不直接写两个函数,一个计算节点数,一个计算节点数并减去一个?
标签: java recursion tree binary-tree binary-search-tree