gpt4 book ai didi

java - 如何编写一个函数来检查给定的二叉搜索树是否包含给定的值?

转载 作者:行者123 更新时间:2023-12-02 01:32:47 24 4
gpt4 key购买 nike

例如,对于以下树:

n1(值:1,左:空,右:空)n2(值:2,左:n1,右:n3)n3(值:3,左:空,右:空)调用 contains(n2, 3) 应返回 true,因为根位于 n2 的树包含数字 3。

我是编程新手,正在尝试解决理解编程概念的挑战。这不是家庭作业问题。

我编写了下面的代码,但它总是返回 false。

class Node {
public int value;
public Node left, right;

public Node(int value, Node left, Node right) {
this.value = value;
this.left = left;
this.right = right;
}
}

public class BinaryTree {

public static boolean contains(Node root, int value){
if(root == null) return false;
else
return
contains(root.left, value) ||
contains(root.right, value);
}

public static void main(String[] args) {

Node n1 = new Node(1, null, null);
Node n3 = new Node(3, null, null);
Node n2 = new Node(2, n1, n3);

System.out.println(contains(n2,3));
}
}

最佳答案

您缺少检查节点处的值是否与您搜索的值相对应的检查。所以你基本上总是返回 false,因为在某一时刻 root 将等于 null。为了避免这种情况,您需要一个 else if 子句,在其中检查节点的值和搜索值,如果两者相等则返回 true。

public static boolean contains(Node root, int value){
if(root == null) return false;
else if (root.value==value) return true;
else
return
contains(root.left, value) ||contains(root.right, value);
}

关于java - 如何编写一个函数来检查给定的二叉搜索树是否包含给定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798726/

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