gpt4 book ai didi

java - return 语句不将控制权返回给 java 中的调用者

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:49 25 4
gpt4 key购买 nike

我正在尝试用Java练习二叉树,并尝试编写一个“isPresent”函数。但是,如果参数 (testInt) 不是根节点值,则该函数将不起作用。它正在进入无限循环。我确信我错过了一些愚蠢的事情。

public class Node {
// Attributes
int value;
Node leftChild;
Node rightChild;

// Constructor
Node (int value) {
this.value = value;
}

// Getter
int getValue() {
return value;
}

boolean isPresent(int testInt) {
Node presentNode = this;
while (presentNode != null) {
if (presentNode.getValue() == testInt) {
return true;
} else if (testInt < presentNode.getValue()) {
presentNode.leftChild.isPresent(testInt);
} else {
presentNode.rightChild.isPresent(testInt);
}
}
return false;
}
}

public static void main(String args[]) {
int[] integers = new int[size];
Arrays.sort(integers);
Node binarySearchTree = createBSTFromSortedArray(integers, 0, size - 1);
if (binarySearchTree.isPresent(testInt)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
in.close();
}

private static Node createBSTFromSortedArray(int[] integers, int start, int end) {
if (end < start) {
return null;
}
int mid = (start + end) / 2;
Node binarySearchTree = new Node(integers[mid]);
binarySearchTree.leftChild = createBSTFromSortedArray(integers, start, mid - 1);
binarySearchTree.rightChild = createBSTFromSortedArray(integers, mid + 1, end);
return binarySearchTree;
}

最佳答案

在您的 isPresent 方法中,您忽略了对 leftright 子级调用 isPresent 的结果。根据需要将 leftright 子级分配给 presentNode

改变

} else if (testInt < presentNode.getValue()) {
presentNode.leftChild.isPresent(testInt);
} else {
presentNode.rightChild.isPresent(testInt);
}

} else if (testInt < presentNode.getValue()) {
presentNode = presentNode.leftChild;
} else {
presentNode = presentNode.rightChild;
}

关于java - return 语句不将控制权返回给 java 中的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325970/

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