[英]If node not found, what level should it go in the Binary Search Tree
我正试图在我的二进制搜索树中实现这个方法,它应该告诉我找到的元素的深度。
我的问题是,如果找不到元素,我的搜索应该如何返回它退出(或被放置)的树的级别。
即,如果树中不存在节点,则应返回应插入树的级别。 如果在树中找不到元素,而不是应该放置它的级别,我不想返回“0”。
如果我搜索“7”,该方法应返回“3”,因为这是搜索停止的级别,理论上将添加“7”
这是我到目前为止的代码,但它一直返回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;
}
提前感谢您查看我的代码。 我无法在SO上找到类似问题的主题。
我的第二个问题是将深度级计数器逻辑添加到我的find方法中是否有意义?
不,如果找到此方法则返回true
,否则返回false
。 你不能在Java中返回多个值(你可以创建一个既能容纳这两个值的对象又可以......呃......)。 但即使你可以 - 一种方法应该做一件事!
对于depthSearch
存在问题:您不会从递归调用return
结果。
它可以很容易地修复:
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.