计算二叉树中的边总数

时间:2016-06-07 00:35:11

标签: java recursion tree binary-tree binary-search-tree

我需要编写一个方法来计算二叉树中的边总数。我正在尝试递归,因为它可以根据节点的数量来计算 - 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;  
}

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;
}