Java 如果没有找到节点,它应该在二进制搜索树中处于什么级别

Java 如果没有找到节点,它应该在二进制搜索树中处于什么级别,java,binary-search-tree,depth,Java,Binary Search Tree,Depth,我试图在我的二叉搜索树中实现这个方法,它应该告诉我找到的元素的深度 我的问题是,如果没有找到元素,我的搜索应该如何返回它退出(或放置)的树的级别 i、 e.如果节点在树中不存在,则应返回其应插入的树级别。如果在树中找不到元素,我不想返回“0”,而是返回它应该放置的级别 这是我到目前为止的代码,但它一直返回1 public int depthSearch(Node root, int key){ int depthLevel = 0; if (root==null || roo

我试图在我的二叉搜索树中实现这个方法,它应该告诉我找到的元素的深度

我的问题是,如果没有找到元素,我的搜索应该如何返回它退出(或放置)的树的级别

i、 e.如果节点在树中不存在,则应返回其应插入的树级别。如果在树中找不到元素,我不想返回“0”,而是返回它应该放置的级别

这是我到目前为止的代码,但它一直返回1

public int depthSearch(Node root, int key){
    int depthLevel = 0;

    if (root==null || root.data==key){
        depthLevel++;
        return depthLevel;
    }

    if (root.data > key){
        depthSearch(root.left, key);
        depthLevel++;
        return depthLevel;
    }else{
        depthSearch(root.right, key);
        depthLevel++;
        return depthLevel;
    }
}
我的第二个问题是,将深度级计数器逻辑添加到find方法中是否有意义

以下是该方法:

public boolean find(int id){
    Node current = root;
    while(current!=null){
        if(current.data==id){
            return true;
        }else if(current.data>id){
            current = current.left;
        }else{
            current = current.right;
        }
    }
    return false;
}
提前感谢您查看我的代码。我找不到一条有类似问题的线索

我的第二个问题是,添加深度级别是否有意义 与我的查找方法相反的逻辑

否,如果找到此方法,则应返回
true
,否则返回
false
。您不能在Java中返回多个值(您可以创建一个同时包含这两个值的对象,但这是。但是,即使你可以-一个方法应该做一件事

至于
depthSearch
的实现有一个问题: 您不会
返回递归调用的结果

但是,它可以很容易地修复:

public int depthSearch(Node root, int key) {

    if (root == null || root.data == key) {
        return 1;
    }    
    else if (root.data > key) {
        return 1 + depthSearch(root.left, key);
    } else {
        return 1 + depthSearch(root.right, key);
    }
}

您没有
返回
递归调用的结果,并且每个递归都从深度0开始确切地说,您正在调用depthSearch,但实际上并没有返回它,因此它每次只返回第一个调用