BST不在Java中递增节点计数

时间:2014-01-25 20:40:14

标签: java nodes binary-search-tree

我正在尝试计算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;    
}

2 个答案:

答案 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'。

话虽这么说,奥利尔的答案是正确的方法。

编辑:我的立场得到了纠正。删除错误说明。但修复语法。