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

删除二进制搜索[重复]

薛宜
2023-03-14

我正在处理一个Path方法,它返回从给定节点到具有给定值键的节点的路径。我的代码返回正确的数字,但它们在括号内。我如何拆下支架?

 private boolean pathhelp(Node n, int val, ArrayList<Integer> lst){
    if(n == null){
        return false;
    }else if(val < n.key){
        lst.add(n.key);
        return pathhelp(n.left, val, lst);
    }else if(val > n.key ){
        lst.add(n.key);
        return pathhelp(n.right, val, lst);
    }else{
        lst.add(n.key);
        return true;
    }
  }
   public String path(Node node, int value) {
    ArrayList<Integer> path = new ArrayList<Integer>();

    if(pathhelp(root,value,path) == true ){
        System.out.println(path);
        String p = "";
        //build p from path list

        return p;
    }else{
        return "";
    }
 }
  }

实际输出为:

[6, 5, 1, 4]

但它应该是:

6, 5, 1, 4

共有1个答案

濮嘉茂
2023-03-14

例如(使用Java8流):

import java.util.*;
import java.util.stream.Collectors;

class Scratch {

    public static void main(String[] args) {
        ArrayList<Integer> path = new ArrayList<Integer>();
        path.add(1);
        path.add(2);

        String asString = path.stream()
                                    .map(Object::toString)
                                    .collect(Collectors.joining(", "));

        System.out.println(asString);
    }
}

您还可以使用Guava的连接器

 类似资料:
  • 我试着删除二叉查找树的节点,当我打印出来的时候,我得到的结果实际上不是这个删除,实际上可以删除二叉树本身的任何键。 我是二进制搜索树的新手。有人能帮我写代码吗?我们将感谢您的帮助。 谢谢 完整代码

  • 目前,我在理解如何在没有传递节点时从二进制搜索树中删除节点时遇到了一个问题。我有两个类,BSTSet和BSTNode,每个类都有一个remove方法。。 当我被传递一个节点时,我理解删除方法,但当我在根上调用remove方法并试图从node类中删除节点时,我不知道从何处开始。有人能告诉我吗?谢谢如果您想了解更多信息,请询问。

  • 我在C中实现了一个二进制搜索树。 对于delete方法,除了最后一种情况外,其他情况都可以使用,即唯一的树是父树,并且它指向两个空的子树。现在的问题是:我希望在删除子树后,打印出父树的左子树和右子树等于什么。它们和父项都应该为NULL,但是当我试图输出这些值时,我得到了一个状态访问冲突。 下面是有关删除的代码。我希望删除父节点,并设置树- 主要:

  • 我正在一个实验室工作,该实验室要求我为二进制搜索树创建一个删除方法。这是我的remove方法的代码。 运行代码时得到的输出是: 移除90后的树。70 80 85 98 100 120 移除70. 80 85 98 100 120后的树 移除85后的树。80 98 100 120 移除98后的树。80 100 120 移除80后的树。100 120 移除120后的树。100 移除100后的树。100

  • 从二叉查找树中删除节点时,您可以将节点替换为左侧的最大子节点或右侧的最小子节点。 我很难理解以下实现执行删除操作的方式。 上面的代码包括以下步骤: < li >查找替换节点。 < li >让替换节点引用已删除节点的左右子节点。 < li >让已删除节点的左右子节点将替换节点作为父节点。 < li >让替换节点引用已删除节点的父节点作为自己的父节点。 < li >清理。 我有困难的部分特别是递归。据

  • 我正在尝试从二叉查找树中删除节点。我可以成功地删除树上的任何其他节点,除了一个特殊的情况。如果目标节点有两个子节点,左边的子节点有右边的子树,我可以定位正确的替换节点,并将值切换到目标节点,但替换节点永远不会被删除。 看看上面的图片,如果我尝试删除17,程序将正确地导航到13,并用13替换17,但它不会像预期的那样删除原来的13。 我附加了我的remove方法和其中引用的方法。 这是我的Node类