计算二叉搜索树中的节点

时间:2016-08-19 14:02:35

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

我编写了以下递归函数来计算二叉搜索树中的总节点数。

class BST {
...........
int lc=0,rc=0;
int totalnodes(Node root){
    if(root==null)return 0;
    lc=totalnodes(root.left);
    rc=totalnodes(root.right);
    return rc+lc+1;
  }
}

上述功能导致错误答案。但是,以下代码有效:

    class BST {
    int totalnodes(Node root){
        if(root==null)return 0;     
        return totalnodes(root.left)+totalnodes(root.right)+1;
    }
   }

第一个功能我缺少什么。

1 个答案:

答案 0 :(得分:2)

您错过了lcrc不属于本地的事实。因此,在为节点lc计算root后,它将被totalnodes(root.left)的调用覆盖,而root的结果计算将在稍后进行。

尝试将lcrc声明移至方法:

int totalnodes(Node root){
    if(root==null)return 0;
    int lc=totalnodes(root.left);
    int rc=totalnodes(root.right);
    return rc+lc+1;
}