java在二叉搜索树中计算节点数
我编写了以下递归函数来计算二叉搜索树中的总节点数
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 楼答案
您忽略了一个事实,即您的
lc
和rc
不是本地的。因此,在为节点root
计算lc
之后,它将被对totalnodes(root.left)
的调用覆盖,而root
的结果计算将在稍后进行尝试将
lc
、rc
声明移动到方法: