gpt4 book ai didi

recursion - 用Java实现的二叉搜索树 - 递归查找元素

转载 作者:行者123 更新时间:2023-12-01 08:31:34 25 4
gpt4 key购买 nike

使用Java,是否可以编写递归方法来查找二叉搜索树中的元素?我说不,因为递归重新回溯的性质,除非我实现不正确?我一直在网上搜索,我能找到的只是一个迭代版本。这是我的方法:

public boolean findValueRecursively(BSTNode node, int value){
boolean isFound = false;
BSTNode currentNode = node;

if (value == currentNode.getData()){
isFound = true;
return isFound;
} else if (value < currentNode.getData()){
findValueRecursively(currentNode.getLeftNode(), value);
} else{
findValueRecursively(currentNode.getRightNode(), value);
}

return isFound;
}

// Node data structure
public class BSTNode
{
private BSTNode leftNode;
private BSTNode rightNode;
private int data;
public BSTNode(int value, BSTNode left, BSTNode right){
this.leftNode = left;
this.rightNode = right;
this.data = value;
}
}



public static void main(String[] args){
BST bst = new BST();
// initialize the root node
BSTNode bstNode = new BSTNode(4, null, null);
bst.insert(bstNode, 2);
bst.insert(bstNode, 5);
bst.insert(bstNode, 6);
bst.insert(bstNode, 1);
bst.insert(bstNode, 3);
bst.insert(bstNode, 7);
if (bst.findValueRecursively(bstNode, 7)){
System.out.println("element is found! ");
} else{
System.out.println("element is not found!");
}
}

我得到的打印结果是“找不到元素”。

任何帮助/提示或建议,非常欢迎。

提前致谢!

最佳答案

递归版本:

public boolean findValueRecursively(Node node, int value){
if(node == null) return false;
return
node.data == value ||
findValueRecursively(leftNode, value) ||
findValueRecursively(rightNode, value);
}

关于recursion - 用Java实现的二叉搜索树 - 递归查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934548/

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