当前位置: 首页 > 知识库问答 >
问题:

带有二叉搜索树的Java返回语句逻辑

麹繁
2023-03-14
 public void insert(int input){
        insert(root, input);
    }
}

public Node insert(Node node, int key) {
    if (node == null) {
        return new Node(key);
    } else if (node.key > key) {
        node.left = insert(node.left, key);
    } else if (node.key < key) {
        node.right = insert(node.right, key);
    } else {
        return node;
    }
}

共有1个答案

宰父君昊
2023-03-14

您的代码中有两个问题,这些问题可能共同解释了为什么您难以理解return的角色。

  1. 您的insert(input)方法忽略其insert(node,key)调用的返回值。这意味着,如果rootnull,则不会在三个
  2. 中插入任何内容
  3. 您的insert(node,key)方法不会在所有代码路径上返回值。这意味着代码甚至无法编译,也不会正确。

修正后的代码可能如下所示:

public void insert(int input) {
    root = insert(root, input); // 1
}

public Node insert(Node node, int key) {
    if (node == null) {
        return new Node(key);
    }

    if (node.key > key) {
        node.left = insert(node.left, key);
    } else if (node.key < key) {
        node.right = insert(node.right, key);
    }

    return node; // 2
}
 类似资料:
  • 我用java编写了一个实用的二叉搜索树,除了一个关键的函数,搜索。我使用的逻辑是,我将检查根是否为空,然后我要搜索的术语是否等于根(所以返回根)或>根(所以搜索右子树)或 使用printlns查看正在发生的事情,我发现如果值在那里,它将通过正确的if语句(包括将BNode n设置为找到的值),但随后由于某种原因将再次通过方法(返回null)。 这个方法唯一起作用的时候是在搜索根节点的时候,这对我来

  • 问题在于从搜索函数返回的MyClass对象(mc)。 我跟踪到Search()并确保“r- “退货”有什么问题吗 谢啦! 我有点困惑。。我可以改为“数据类型BST::搜索(常量字符串名称)”而不是“数据类型*BST::搜索(常量字符串名称)”。。。。编译器似乎无法通过。返回NULL将有一些问题。。。 但是我尝试了你的方法来更改DataType*没有de::getIthem()它仍然有错误.....

  • 我正在尝试为多态二叉搜索树编写一个size()方法。也就是说,BST具有EmptyTree和NoneptyTree类,这两个类都实现了“树”接口。EmptyTree用于表示空树或子树,而不是null(如在常规BST中) 我让EmptyTree和NoneptyTree从树接口实现size()方法,如下所示: 然而,当我试图在测试中运行这个: 它说树的大小是3,而不是4。 不过,对于这些人来说,这很管

  • 我需要实现一个Binary Search Tree类作为家庭作业,但我很难实现insert函数。我在谷歌搜索了很多,想找到一些解决方案或可能的方法,但他们都没有使用过键和值(大多只是值),或者如果他们也使用了键,他们有很多单独的功能,我想这是不允许的。 因此,预构建的只是: 现在的问题是,如果我想检查例如值是否小于或大于当前节点以将其放在右侧或左侧,我会收到诸如“root未定义”或“root.ri

  • 我很难按我教授想要的格式打印出一个二叉搜索树。 他的格式是这样的: 我的代码:

  • 我有一个整数的二叉搜索树,包括1、2、...、9。我的遍历方法工作,我知道节点在那里,并且以正确的顺序。 我在纸上写下了当我搜索一个值时发生的事情,它返回根是没有意义的。我做错了什么?