Java 如果没有找到节点,它应该在二进制搜索树中处于什么级别
我试图在我的二叉搜索树中实现这个方法,它应该告诉我找到的元素的深度 我的问题是,如果没有找到元素,我的搜索应该如何返回它退出(或放置)的树的级别 i、 e.如果节点在树中不存在,则应返回其应插入的树级别。如果在树中找不到元素,我不想返回“0”,而是返回它应该放置的级别 这是我到目前为止的代码,但它一直返回1Java 如果没有找到节点,它应该在二进制搜索树中处于什么级别,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
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,但实际上并没有返回它,因此它每次只返回第一个调用