Java 二叉搜索树中的节点计数
我编写了以下递归函数来计算二进制搜索树中的总节点数Java 二叉搜索树中的节点计数,java,algorithm,recursion,binary-search-tree,nodes,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 {
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;
}
}
第一个函数缺少的是什么。您缺少的是您的
lc
和rc
不是本地的。因此,在为节点根节点计算lc
后,它将被调用totalnodes(root.left)
覆盖,而根节点的结果计算将在稍后进行
尝试将lc
,rc
声明移动到方法:
int totalnodes(Node root){
if(root==null)return 0;
int lc=totalnodes(root.left);
int rc=totalnodes(root.right);
return rc+lc+1;
}