在二叉树 Java 中查找并 return 一个节点
Find and return a Node in Binary Tree Java
您好,我正在尝试查找等于参数给定字符串的节点和 return 该节点。我的结构是一个二叉字符串树。我们假设搜索到的字符串存在。
var q 被初始化到树的根。 (在我调用方法 find 的函数中)
private NodeTree find(NodeTree q, String cont){
if(q._contingut.equals(cont)) return q;
else {
if(q._left!=null) return find(q._left,cont);
else if(q._right!=null)return find(q._right,cont);
}
return null;
}
在 find() 函数的第 4 行中,您不应该 return 递归调用左子树的结果。相反,如果从左子树中得到 "NULL",则应该在右子树中搜索字符串。
这是更新后的代码
private NodeTree find(NodeTree q, String cont){
if(q==NULL) return NULL;
if(q._contingut.equals(cont)) return q;
NodeTree result = NULL;
if(!q._left) result = find(q._left,cont);
if(!result && q._right) result = find(q._right,cont);
return result;
}
如果您的 BST 构建正确,您需要决定在哪里查看(左子树或右子树)将当前节点值与查询值进行比较,例如:
NodeTree find(NodeTree q, String query) {
if(q.value.equals(query))
return q;
else if (q.value.compareTo(query) > 0)
return q.left == null ? null : find(q.left, query);
else
return q.right == null ? null : find(q.right, query);
}
您好,我正在尝试查找等于参数给定字符串的节点和 return 该节点。我的结构是一个二叉字符串树。我们假设搜索到的字符串存在。
var q 被初始化到树的根。 (在我调用方法 find 的函数中)
private NodeTree find(NodeTree q, String cont){
if(q._contingut.equals(cont)) return q;
else {
if(q._left!=null) return find(q._left,cont);
else if(q._right!=null)return find(q._right,cont);
}
return null;
}
在 find() 函数的第 4 行中,您不应该 return 递归调用左子树的结果。相反,如果从左子树中得到 "NULL",则应该在右子树中搜索字符串。
这是更新后的代码
private NodeTree find(NodeTree q, String cont){
if(q==NULL) return NULL;
if(q._contingut.equals(cont)) return q;
NodeTree result = NULL;
if(!q._left) result = find(q._left,cont);
if(!result && q._right) result = find(q._right,cont);
return result;
}
如果您的 BST 构建正确,您需要决定在哪里查看(左子树或右子树)将当前节点值与查询值进行比较,例如:
NodeTree find(NodeTree q, String query) {
if(q.value.equals(query))
return q;
else if (q.value.compareTo(query) > 0)
return q.left == null ? null : find(q.left, query);
else
return q.right == null ? null : find(q.right, query);
}