首页 > 解决方案 > 为什么这个方法总是返回 -1

问题描述

  private int deleter(BSTNode node, int key) {
    if(node.key==key){
        if(node.right==null && node.left==null){
            node=null;
            return 0;
        }
    }
    else if(key<node.key){
        node=node.left;
        deleter(node,key);

    }
    else {
        node=node.right;
        deleter(node,key);
    }


    return -1;
}

为什么这个方法总是返回-1。当它找到确切的节点时它应该返回0吗?它再次进入这个块然后返回 -1

 else {
        node=node.right;
        deleter(node,key);
 }

标签: javaif-statementrecursionreturnreturn-value

解决方案


您忽略递归调用返回的值:

private int deleter(BSTNode node, int key) {
    if(node.key==key){
        if(node.right==null && node.left==null){
            node=null;
            return 0;
        }
    }
    else if(key<node.key){
        node=node.left;
        return deleter(node,key);

    }
    else {
        node=node.right;
        return deleter(node,key);
    }


    return -1;
}

编辑:您应该在此代码中添加一些空检查,否则您可能会以NullPointerException.


推荐阅读