在Java中递归搜索树时打印所有BST节点

时间:2019-04-17 18:15:23

标签: java binary-search-tree

我试图遍历Java中的BST以在它与参数匹配时返回节点数据。但是,我遇到的问题是,当递归函数找到该节点时,它会正确返回所需的节点数据,但还会返回该路径的所有其他节点数据,以到达所需的节点。

我尝试调整递归return语句并创建变量以存储最终结果,然后返回该变量,但两者都不起作用或仍然具有过多的返回结果。

关于此文件的几点注释,当前是节点,有很多基本的BST函数,但它们的命名略有不同。 getData()从节点中提取数据,getLeftChild()获得左子节点,getRightChild()得到右子节点,toString()仅以一种奇特的方式返回数据。

private static String nodeLookup(String s, Node current) {

        String returnMeaningStatement;


        int compareInt = s.compareTo(current.getData().toLowerCase());

        if (compareInt == 0){
            return current.toString();
        }

        else if (compareInt <=-1){
            if (current.getLeftChild() == null){
                throw new NoSuchElementException();
            }
            else {
                return nodeLookup(s, current.getLeftChild());
            }

        }

        else{
            if (current.getRightChild() == null){
                throw new NoSuchElementException();
            }
            else {
                return nodeLookup(s, current.getRightChild());
            }
        }

如果到所需节点的路径是节点1,节点2,节点3,并且这些节点中的数据是: 节点1:您好 节点2:我的名字 节点3:是

期望的返回结果应该是

  

实际结果是

  

你好我的名字是

1 个答案:

答案 0 :(得分:0)

我认为问题出在return current.toString();

我不知道current.toString()返回什么,但是我猜想它返回了路径。

尝试将其替换为return current.getData()