java 我的方法没有返回bst中节点的最小差异

w41d8nur  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(114)

我不知道为什么它不返回最小的差异,可以在二叉搜索树中找到。我不能调试,也不能使用测试器,这使得它更难找到问题。

Instrcutions:

实现一个名为getMinimumDifference()的方法,该方法将二叉搜索树的根作为参数,并返回一个整数,该整数表示二叉搜索树中任何两个不同节点的最小绝对差。
假设条件:
二叉搜索树中得节点值大于或等于零.二叉搜索树中得所有节点值都是唯一得.该方法将永远不会接收少于2个节点得树得根.
第一个

r6hnlfcb

r6hnlfcb1#

必须计算每一步的min值:

public static void recgmd(int minHolder,BTNode<Integer, Integer> currentNode, BTNode<Integer, Integer> prevNode) {
    if(currentNode == null) {
        return;
    }
    
    if(prevNode != null){
        if(currentNode.getValue() - prevNode.getValue() <= minHolder) {
            minHolder = currentNode.getValue() - prevNode.getValue();
        }
    }
    prevNode = currentNode;
    recgmd(minHolder, currentNode.getLeftChild(), prevNode);
    recgmd(minHolder, currentNode.getRightChild(), prevNode);
}

注意:prevNode应该对每个parentNode都有正确的值,而不仅仅是对rightNode的父级。

相关问题