我不知道为什么它不返回最小的差异,可以在二叉搜索树中找到。我不能调试,也不能使用测试器,这使得它更难找到问题。
Instrcutions:
实现一个名为getMinimumDifference()的方法,该方法将二叉搜索树的根作为参数,并返回一个整数,该整数表示二叉搜索树中任何两个不同节点的最小绝对差。假设条件:二叉搜索树中得节点值大于或等于零.二叉搜索树中得所有节点值都是唯一得.该方法将永远不会接收少于2个节点得树得根.第一个
r6hnlfcb1#
必须计算每一步的min值:
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的父级。
prevNode
parentNode
rightNode
1条答案
按热度按时间r6hnlfcb1#
必须计算每一步的
min
值:注意:
prevNode
应该对每个parentNode
都有正确的值,而不仅仅是对rightNode
的父级。