gpt4 book ai didi

java - 我该如何更改这段代码,以便我只有 getKey?

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:51 26 4
gpt4 key购买 nike

private void searchForK(V value , DictionaryNode<K,V> node){
if(node != null){
if(((Comparable<V>)value).compareTo(node.value) == 0) {
obtainKey = node.key;
return;
}
searchForK(value,node.lChild); //recursive since we have to simply look
searchForK(value,node.rChild);//through each child which is itself another searchforK
}
}

public K getKey(V value) {
searchForK(value,rNode);
return obtainKey;

}//end getKey

如何将上面的代码变成getKey的一个函数?我对递归感到困惑。我想摆脱 searchForK 函数,让 getKey 具有与 searchForK 相同的功能。

这是我尝试改变这两个功能:

public K getKey(V value) {
// private void searchForK(V value , DictionaryNode<K,V> node){
if(rNode != null){
if(((Comparable<V>)value).compareTo(rNode.value) == 0) {
obtainKey = rNode.key;
return (K) obtainKey;
}
rNode = rNode.lChild;
getKey(value);
rNode = rNode.rChild;
getKey(value);
}
return null;

虽然它的行为方式不同,但我做错了什么?

这些是我的全局变量:

public class BinarySearchTree<K,V> implements DictionaryADT<K,V> {
/* data fields */

/* Node Variables */
public DictionaryNode<K,V> rNode; //Root Node
public DictionaryNode<K,V> pNode; //Parent Node
K obtainKey;

在我的情况下,我应该用 rNode 替换 curNode 吗?

最佳答案

private DictionaryNode<K,V> curNode = rNode;

public K getKey(V value) {

if (curNode != null) {
int c = ((Comparable<V>)curNode.value).compareTo(value);

if (c == 0) {

K key = curNode.key;

curNode = rNode; // reset curNode
return key;
}
else if (c < 0 && curNode.lChild != null) {
curNode = curNode.lChild;
return getKey(value);
}
else if (curNode.rChild != null) {
curNode = curNode.rChild;
return getKey(value);
}
}
curNode = rNode; // reset curNode
return null;

关于java - 我该如何更改这段代码,以便我只有 getKey?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com