我正在尝试计算BST中的节点,但是retval
没有递增。通过调试,我看到每个节点都被访问过,但我不确定为什么它没有增加。我知道树中有3个节点,它返回0 ...
public int countNodes(){
if (root == null)
throw new NullPointerException();
return countNodes(root);
}
private int countNodes(LNode ptr){
int retval = 1;
if (root != null && ptr.right == null && ptr.left == null)
return retval = 1;
else
retval = countNodes(ptr.right) + countNodes(ptr.left) + 1;
return retval;
}
我也尝试过不使用retval
来计算:
private in countNodes(LNode ptr){
if (root != null && ptr.right == null && ptr.left == null)
return 1;
else
return= countNodes(ptr.right) + countNodes(ptr.left) + 1;
}
答案 0 :(得分:3)
这更准确,更相关:
private int countNodes(LNode ptr){
if (ptr == null)
return 0;
return 1 + countNodes(ptr.left) + countNodes(ptr.right);
}
答案 1 :(得分:1)
语法'return x = y'不正确。你的意思是'return retval'或'return countNodes(ptr.right)+ countNodes(ptr.left)+ 1;',而不是'return retval = 1'。
话虽这么说,奥利尔的答案是正确的方法。
编辑:我的立场得到了纠正。删除错误说明。但修复语法。